1

我想并行运行这些进程,所以我p.join从该__main__部分注释掉了 a 。没有.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()
4

1 回答 1

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()
于 2013-08-09T04:12:07.343 回答