Пафосная ошибка многопроцессорного пула CPickle

Когда я попытался запустить следующий код:

from pathos.multiprocessing import ProcessingPool as Pool
list1 = [1,2,3,4,5]
list2 = [6,7,8,9,10]
def function1(x,y):
    print x
    print y
if __name__ == '__main__':
    pool = Pool(5)
    pool.map(function1, list1, list2)

Он получает следующую ошибку:

Traceback (most recent call last):
  File "test.py", line 9, in <module>
    pool.map(function1, list1, list2)
  File "C:\Python27\lib\site-packages\pathos\multiprocessing.py", line 136, in map
    return _pool.map(star(f), zip(*args)) # chunksize
  File "C:\Python27\lib\site-packages\multiprocess\pool.py", line 251, in map
    return self.map_async(func, iterable, chunksize).get()
  File "C:\Python27\lib\site-packages\multiprocess\pool.py", line 567, in get
    raise self._value
cPickle.PicklingError: Can't pickle <type 'function'>: attribute lookup __builtin__.function failed

Разве пафос.многопроцессорность не призвана решить эту проблему?


person Minh Doan    schedule 21.05.2017    source источник


Ответы (1)


Я pathos автор. Когда я пробую ваш код, я не получаю ошибку. Однако, если вы видите CPickle.PicklingError, я предполагаю, что у вас возникла проблема с установкой multiprocess. Вы работаете в Windows, так у вас есть компилятор C? Он нужен для multiprocess, чтобы получить полную установку multiprocess.

person Mike McKerns    schedule 23.05.2017
comment
К вашему сведению, при неудачной установке multiprocess по умолчанию используется исходный сборщик. - person Mike McKerns; 23.05.2017
comment
Я решил проблему, установив компилятор C. Спасибо за вашу помощь! - person Minh Doan; 23.05.2017