Как исправить ошибку AssertionError в многопроцессорном модуле pathos.helpers? - PullRequest
0 голосов
/ 10 января 2019

Я использую многопроцессорный модуль на основе укропа из 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
...