클래스 메서드를 병렬로 실행하려고하지만 해결할 수없는 오류가 발생합니다. 내 코드입니다 : 내가 우분투 머신에서이 코드를 실행하면클래스 메소드에서 파이썬 모듈의 concurrent.futures를 사용할 수없는 이유는 무엇입니까?
import concurrent.futures as futures
samples = ['asfd', 'zxcv', 'asf', 'qwer']
class test:
def __init__(self, samples):
maturedb = {}
with futures.ProcessPoolExecutor() as exe:
for samplename, dResult in exe.map(self.make_readdb, samples):
maturedb[samplename] = dResult
print(maturedb)
def make_readdb(self, samplename):
return samplename, 1
test(samples)
, 다음과 같은 오류가 발생합니다
방법의 make_readdb 그냥 예를 만들기 위해 단순화되어 있지만, 그것은 병목Traceback (most recent call last):
File "/usr/lib/python3.2/multiprocessing/queues.py", line 272, in _feedsend(obj)
_pickle.PicklingError: Can't pickle <class 'method'>: attribute lookup builtins.method failed
실제 코드와 나는 그것을 평행하게 만들 필요가있다. 도와주세요. docs에서
코드가 파이썬 3.3에서 작동합니다. – jfs
파이썬 3.5.2에서 코드를 테스트했는데 잘 작동했습니다. 모든 답변에 많은 감사드립니다. – user2028191