我有两组并行操作,一组跟随另一组,类似这样:
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之间的区别是什么?
感谢。
答案 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