Python多处理未同步
我遇到了多进程同步的问题 以下代码:Python多处理未同步,python,multiprocessing,Python,Multiprocessing,我遇到了多进程同步的问题 以下代码: from multiprocessing import Process list = [1,2,3,4,5] def function1(): for i in range (5): print list[i] if __name__ == '__main__': for num in range(2): Process(target=function1).start() 结果是 11 22
from multiprocessing import Process
list = [1,2,3,4,5]
def function1():
for i in range (5):
print list[i]
if __name__ == '__main__':
for num in range(2):
Process(target=function1).start()
结果是
11
22
33
44
55
如何使流程有序地工作?例如:Process1与i=1一起工作,同时Process2与i=2一起工作,依此类推?您的函数所做的是打印数字1到5,而不管它在哪个进程中执行。您看到11、22等的原因是因为两个进程并行运行,所以它们同时打印值 您需要将进程号传递给函数,以便它知道要打印什么,然后函数所要做的就是打印进程号 这应该起作用:
from multiprocessing import Process
list = [1,2,3,4,5]
def function1(x):
print x
if __name__ == '__main__':
for num in range(2):
Process(target=function1, args=[list[num]]).start()
我认为您需要创建两个不同的函数,而不是让两个线程都运行同一个函数。这种方法为列表中的每个元素创建一个进程,这可能有些过分。使用multiprocessing.Pool.map可能会更好