Я использую многопроцессорный модуль на основе укропа из pathos.helpers
, который имеет однозначное сопоставление с обычным multiprocessing
. Это работало нормально, пока я не начал получать AssertionError
.
Мой вопрос очень похож на Многопроцессорный модуль Pythons (с укропом) выдает бесполезную ошибку AssertionError , за исключением того, что я использую Mac. Я пробовал это с и без pool.close()
и pool.join()
.
Модуль из pathos.helpers
, похоже, не имеет методов clear()
и restart()
- имеет смысл, учитывая отображение с помощью multiprocessing
. Он также кеширует пулы, например , комментарий к этому вопросу указывает на pathos.multiprocessing
? Если да, как мне это предотвратить?
Вот упрощенная версия моего кода:
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