Python多处理未同步

时间:2017-05-21 05:45:29

标签: 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
33
44
55

如何让流程按顺序运行?例如:Process1适用于i = 1,同时Process2适用于i = 2,依此类推?

1 个答案:

答案 0 :(得分:1)

你的功能是打印数字1到5,无论它在哪个进程中执行。你看到11,22等的原因是因为两个进程都在" parallel"所以他们同时打印价值观#34;。

您需要将流程编号传递给该功能,以便它知道要打印的内容,然后您的所有功能都必须打印流程编号。

这应该有效:

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()