작업을 동시에 나누기 위해 multiprocessing
의 Pool.map()
기능 을 사용하려고합니다 . 다음 코드를 사용하면 정상적으로 작동합니다.
import multiprocessing
def f(x):
return x*x
def go():
pool = multiprocessing.Pool(processes=4)
print pool.map(f, range(10))
if __name__== '__main__' :
go()
그러나 더 객체 지향적 인 접근 방식으로 사용하면 작동하지 않습니다. 오류 메시지는 다음과 같습니다.
PicklingError: Can't pickle <type 'instancemethod'>: attribute lookup
__builtin__.instancemethod failed
다음이 내 주요 프로그램 인 경우에 발생합니다.
import someClass
if __name__== '__main__' :
sc = someClass.someClass()
sc.go()
다음은 내 someClass
수업입니다.
import multiprocessing
class someClass(object):
def __init__(self):
pass
def f(self, x):
return x*x
def go(self):
pool = multiprocessing.Pool(processes=4)
print pool.map(self.f, range(10))
누구나 문제가 무엇인지, 쉽게 해결할 수 있는지 알고 있습니까?
PicklingError: Can't pickle <class 'function'>: attribute lookup builtins.function failed