我正在尝试运行多处理程序,但由于某种原因,进程不会同时启动,它们会等待另一个程序完成。下面是一段代码和一些输出。您能否提一些建议? 我在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)
答案 0 :(得分:2)
您滥用multiprocessing.Process
类接口。您需要将函数作为目标和列表中的参数传递。
您的逻辑正在调用该函数并将其结果作为目标传递给该进程。
p1 = multiprocessing.Process(target=function, args=(seq1,))
p1.start()
p2 = multiprocessing.Process(target=function, args=(seq1,))
p2.start()