我正在使用pathos.helpers
中基于莳萝的多处理模块,该模块与常规multiprocessing
具有一对一的映射。运行良好,直到我开始获得AssertionError
为止。
除了我使用的是Mac外,我的问题与Pythons multiprocess module (with dill) gives an unhelpful AssertionError非常相似。我在有和没有pool.close()
和pool.join()
的情况下都尝试过。
pathos.helpers
中的模块似乎没有clear()
和restart()
方法-考虑到与multiprocessing
的映射,这是有道理的。是否还会像pathos.multiprocessing
那样缓存the comment on this question指示的池?如果是,该如何预防?
这是我的代码的简化版本:
from pathos.helpers import mp
if __name__ == '__main__':
l = mp.Lock()
pool = mp.Pool(initializer=init, initargs=(l,), processes = 4)
results = pool.map(run_func, xyz)
pool.close()
pool.join()
这是我得到的错误:
Traceback (most recent call last):
File "run_xyz.py", line 284, in <module>
results = pool.map(run_func, xyz)
File "/usr/local/lib/python2.7/site-packages/multiprocess/pool.py", line 253, in map
return self.map_async(func, iterable, chunksize).get()
File "/usr/local/lib/python2.7/site-packages/multiprocess/pool.py", line 572, in get
raise self._value
AssertionError