我想并行运行这些进程,所以我从__main__
部分注释掉了一个p.join
。没有.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()
启动流程后加入流程。
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()
如果运行多个类似的任务,则可以使用多处理。水塘
if __name__ == '__main__':
pool = multiprocessing.Pool()
pool.map(worker, range(4))
pool.close()
pool.join()