多处理,如何在不创建僵尸的情况下并行运行进程?

时间:2013-08-09 04:09:11

标签: python-2.7 multiprocessing

我想并行运行这些流程,因此我在p.join部分注释了__main__。 如果我使用不同的并行多处理方法,那么没有.join或更好的后果是什么?

import multiprocessing

def worker(num):
    x = 0
    for i in range(10000):
        x+=1
    print x, num

if __name__ == '__main__':

    for i in range(4):
        p = multiprocessing.Process(target=worker, args=(i,))
        p.start()
        # p.join()

1 个答案:

答案 0 :(得分:2)

启动后加入流程。

if __name__ == '__main__':
    procs = []
    for i in range(4):
        p = multiprocessing.Process(target=worker, args=(i,))
        p.start()
        procs.append(p)
    for p in procs:
        p.join()

如果您运行多个类似的任务,则可以使用multiprocessing.Pool

if __name__ == '__main__':
    pool = multiprocessing.Pool()
    pool.map(worker, range(4))
    pool.close()
    pool.join()