1

我正在使用pathos.Pool,但我认为所需的技术与 `multiprocessing.Pool 中的技术相当。

我有一个生成器,可以产生大量(大量)要做的事情。

from pathos import ProcessingPool
def doStuff(item):
    return 1

pool = ProcessingPool(nodes=32)
values = pool.map(doStuff, myGenerator)

不幸的是,应用于我生成的项目(此处:)的功能doStuff很快就会清除。因此,到目前为止,我一直无法通过序列化来提高速度——事实上,代码的多处理版本比原始版本运行得慢。

我认为这是因为与工作人员完成任务所需的时间相比,将下一个项目从池中交付给工作人员的开销很大。

我想解决方案是将生成的项目“分块”:将项目分组到n 列表中,然后将它们提供给包含n许多工人的池(因为所有工作都需要几乎完全一样的时间)。或者也许是一个不太极端的版本。

在 Python 中实现这一目标的好方法是什么?

4

0 回答 0