无法同时启动多个python进程

时间:2017-06-01 11:00:35

标签: python multiprocessing

我正在尝试运行多处理程序,但由于某种原因,进程不会同时启动,它们会等待另一个程序完成。下面是一段代码和一些输出。您能否提一些建议? 我在Windows 10上运行python 2.7,但我在python 3.5 Ubuntu上也测试了相同的结果。

即使两个进程都运行相同的功能,但对我来说并不重要,因为它们的结果没有并列,我只想更好地使用CPU

import multiprocessing
import time
import os

def function(x):
    seq1 = x
    index = 1
    match = False
    t = time.time()

    while match == False:
.........................
       if k==6 :
          match = True

       index = index + 1

def Main():
    x1=raw_input("Please enter first sequence: ")
    seq1=[]
    seq1 = x1.split(",")

    p1 = multiprocessing.Process(target=function(seq1),)
    p1.start()
    p2 = multiprocessing.Process(target=function(seq1),)
    p2.start()

Main()

输出(我必须等到P1完成然后P2开始): P1开始了 进程ID:4520 比赛发现于:30401191次尝试 ('由P1完成:',1072.0950000286102) P2开始了 进程ID:4520 匹配找到:8665524次尝试 ('由P2完成:',298.375)

1 个答案:

答案 0 :(得分:2)

您滥用multiprocessing.Process类接口。您需要将函数作为目标和列表中的参数传递。

您的逻辑正在调用该函数并将其结果作为目标传递给该进程。

p1 = multiprocessing.Process(target=function, args=(seq1,))
p1.start()
p2 = multiprocessing.Process(target=function, args=(seq1,))
p2.start()