如何使用Pool进行多组进程?

时间:2014-02-04 02:21:05

标签: python multiprocessing

我有两组并行操作,一组跟随另一组,类似这样:

for i in range(A):
    pool.apply_async(func_a, (params_for_a))


for i in range(B):
    pool.apply_async(func_b, (params_for_b))

我必须在启动func_b进程之前等待所有func_a进程完成。要使用join(),我太靠近()池,然后为func_b创建另一个池。创建两个池是唯一的方法吗?

Pool和Process之间有什么区别? apply_async和map之间的区别是什么?

感谢。

1 个答案:

答案 0 :(得分:1)

您需要对apply_async为您提供的AsyncResult对象执行某些操作。通常,将它们全部附加到list,然后对它们执行某些操作。

results = []

for i in range(A):
    results.append(pool.apply_async(func_a, (params_for_a)))

for res in results:
    # block main thread until all results are in
    res.wait() #or do something with res.get()

#all results in, proceed with pool B