多处理,是否会阻止进程并行工作?

时间:2013-08-09 03:48:04

标签: python-2.7 multiprocessing

我对多处理很陌生,一直试图找到这个问题的答案,但没有成功。

给定两个进程,如果我使用.join,第二个进程是否与第一个进程并行开始,还是等到第一个进程完成?

如果是后者,我如何让这些过程协同工作?

import multiprocessing

def worker():
    x = 0
    for i in range(2000000):
        x+=1
    print x

def worker2():
    x = 0
    for i in range(10000000):
        x+=1
    print x


if __name__ == '__main__':
    q = multiprocessing.Process(target=worker2,)
    q.start()
    q.join()

    p = multiprocessing.Process(target=worker,)
    p.start()
    p.join()

1 个答案:

答案 0 :(得分:1)

join()使主进程等待子进程终止;防止第二个过程开始。

在第二个流程开始后放置join()以并行运行这两个流程。

if __name__ == '__main__':
    q = multiprocessing.Process(target=worker2,)
    q.start()

    p = multiprocessing.Process(target=worker,)
    p.start()

    q.join()
    p.join()