我使用pathos.Pool
,但我认为所需的技术与`multiprocessing.Pool。
我有一个生成器可以生成一大堆(巨大的)要做的事情。
from pathos import ProcessingPool
def doStuff(item):
return 1
pool = ProcessingPool(nodes=32)
values = pool.map(doStuff, myGenerator)
不幸的是,应用于我生成的项目的函数(此处:doStuff
)很快就会清除。因此,到目前为止,我无法通过序列化生成速度提升 - 事实上,代码的多处理版本运行速度比原始版本慢。
我认为这是因为与工作人员完成任务所花费的时间相比,从池中向工作人员提供下一个项目的开销很大。
我认为解决方案是" chunkify"生成的项目:将项目分组到n
列表中,然后将它们提供给具有n
许多工作者的池(因为所有作业应该花费几乎很长的时间)。或者可能是一个不太极端的版本。
在Pytohn实现这一目标的好方法是什么?