다중 처리를 사용하는 맵의 간단한 예제가 있습니다. 그러나 이것조차도 정확하게 달릴 수는 없습니다.다중 처리 맵이 예외를 발생시킵니다.
Exception in thread Thread-3:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 808, in __bootstrap_inner
self.run()
File "/usr/lib/python2.7/threading.py", line 761, in run
self.__target(*self.__args, **self.__kwargs)
File "/usr/lib/python2.7/multiprocessing/pool.py", line 342, in _handle_tasks
put(task)
PicklingError: Can't pickle <type 'function'>: attribute lookup __builtin__.function failed
을 및 Ctrl + C로 종료 할 수 없습니다 :
import multiprocessing
p = multiprocessing.Pool()
rere = range(50)
print p.map(lambda x: x+1, rere)
이이 예외를 인쇄합니다.
내가보기에 문제를 해결하려면 어떻게해야합니까? 당신이 그것을하려고하는
방법 ... 멀티의 이상한 세계로 내 연구에서, 그래서
참으로, 나는 총을 유감스럽게 생각합니다. 그것은 multiprocessing.pool.map이 작동하는 방식과 관련이 있습니다.'lambda x : x + 1' 부분은 함수가 아니라 피클 할 수 있어야합니다. 우리 모두가 더 많은 실험을해야합니다! – TehTris
http://stackoverflow.com/questions/8804830/python-multiprocessing-pickling-error?rq=1 거의 똑같은 내용을 확인하십시오 – TehTris
모듈에서 최상위 레벨로 함수를 선언하는 이유는 다음과 같습니다. AttributeError : 'module'객체에는 'f'속성이 없습니다 (물론 내 함수는 f라고하며 어떤 이유로 든 존재하지 않는다고 주장합니다). – LtWorf