正确执行ProcessingPool的正确方法



我正在使用pathos.multiprocessing库(因为我的工作方法中有lambdas),并且正在尝试按顺序运行两个processingpool。

例如:

from pathos.multiprocessing import ProcessingPool
pool=ProcessingPool(nodes=2)
res=pool.map(workerFunc,workerArgList)
pool.close()
pool.join()
# ...
pool=ProcessingPool(nodes=2)
res=pool.map(workerFunc2,workerArgList2)
pool.close()
pool.join()

代码(按原样)返回pool.py的map()函数在第二个pool.map()(在servert self self._state == run)中。每个游泳池独立工作正常。看来,由于某种原因,池的状态设置为终止,而不是在第二个初始化中运行。我应该如何初始化第二个池(或终止第一个)以获得所需的行为?还是我偶然发现了某种错误?

谢谢!安德鲁

根据pool.map()的官方python文档,

它会阻止结果。

换句话说,在所有处理完成之前,pool.map()不会返回结果。使用pool.map()时,您不需要每次运行pool.close()pool.join(),只需完成pool之后一次。

相关内容

  • 没有找到相关文章

最新更新