작성하려고하는 간단한 다중 처리 예제가 있습니다. 일반 map() 함수 버전이 작동하지만 Pool.map으로 변경하면 이상한 오류가 발생합니다.파이썬 다중 처리 맵 함수 오류
from multiprocessing import Pool
from functools import partial
x = [1,2,3]
y = 10
f = lambda x,y: x**2+y
# ordinary map works:
map(partial(f,y=y),x)
# [11, 14, 19]
# multiprocessing map does not
p = Pool(4)
p.map(partial(f, y=y), x)
Exception in thread Thread-2:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 551, in __bootstrap_inner
self.run()
File "/usr/lib/python2.7/threading.py", line 504, in run
self.__target(*self.__args, **self.__kwargs)
File "/usr/lib/python2.7/multiprocessing/pool.py", line 319, in _handle_tasks
put(task)
PicklingError: Can't pickle <type 'function'>: attribute lookup __builtin__.function failed
산 세척 오류? 정확히이게 뭐야?
죄송 합니다만, 나는 완전히 이해하지 못하고 있습니다 .- 부분적으로는 거의 똑같은 다른 스크립트가 있습니다. 모듈 수준에서 정의 된 것이 무엇입니까? Ahh, 당신의 업데이트를 보았습니다. 예, def 대 lambda는 정확하게 작동 한 것과 그렇지 않은 것의 차이입니다. 감사! – Mittenchops