我正在使用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
之后一次。