我正在使用pathos.multiprocessing库(因为我的工作方法中包含lambda),并且试图按顺序运行两个ProcessingPools。

例如:

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.map()处的pool.py的map()函数中返回AssertionError(在assert self._state == RUN时)。每个池独立运行良好。似乎由于某种原因,在第二次初始化中,池的状态设置为TERMINATE而不是RUN。我应该如何初始化第二个池(或终止第一个池)以获得所需的行为?还是我偶然发现的某种错误?

谢谢!
安德鲁

最佳答案

根据official Python Documentation on Pool.map()


  它会阻塞直到结果准备就绪。


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

关于python - 按顺序执行ProcessingPools的正确方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42728102/

10-13 08:39