我正在使用pathos.multiprocessing库(因为我的worker方法中有lambdas),并且我试图按顺序运行两个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()
代码按原样返回第2个pool.map()中的pool.py的map()函数中的AssertionError(在assert self._state == RUN处)。每个游泳池独立工作。看来,由于某种原因,池的状态在第二次初始化时设置为TERMINATE而不是RUN。我应该如何初始化第二个池(或终止第一个池)以获得所需的行为?或者这是我偶然发现的某种错误?
谢谢! 安德鲁
答案 0 :(得分:1)
根据official Python Documentation on Pool.map(),
它会阻塞,直到结果准备就绪。
换句话说,pool.map()
在完成所有处理之前不会返回结果。使用pool.map()
时,您不需要每次都运行pool.close()
和pool.join()
,只需在使用pool
后执行一次。