1

我将 map_async 与返回大量数据的进程一起使用。正常的 map_async 导致数据存储在内存中,然后在处理完所有内容后返回。为了解决这个问题,我使用了一种生成器方法:

结合 itertools 和多处理?

但是,这并没有充分利用多线程(例如,如果您完成了 29 个线程和 1 个线程挂起,则在每个人都完成之前它不会开始下一批作业)。有没有办法拥有 map_async 或者是否存在类似的函数,它将在每个线程完成时将其返回发送到回调函数?

4

1 回答 1

0

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

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

于 2013-04-11T17:41:46.233 回答