map_async完成后立即执行回调

时间:2013-04-11 17:22:39

标签: python python-multithreading

我正在使用map_async来处理返回大量数据的进程。正常的map_async导致数据存储在内存中,然后在处理完所有内容时返回。为了解决这个问题,我使用了以下的发电机方法:

Combining itertools and multiprocessing?

然而,这并没有充分利用多线程(如果你有29个线程完成,1个线程挂起,它将不会启动下一批作业,直到每个人都完成)。有没有办法让map_async或者是否存在类似的函数,它会在每个线程完成时将其返回值发送回回函数?

1 个答案:

答案 0 :(得分:0)

您想要的是使用基于生产者 - 消费者的解决方案。生产者将任务放在multiprocessing.Queue中,消费者(子流程)在循环中获取并处理它们。

This是一个很好的SO问题,有一个(详细的)可能的解决方案。

相关问题