我正在使用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/