Я хочу, чтобы мой метод класса выполнялся параллельно, но он вызывает только некоторую ошибку, которую я не могу решить. Мой код:Почему я не могу использовать python module 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)
Если я запускаю этот код в машине Ubuntu, об ошибке, как показано ниже происходит:
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
Метод make_readdb только упрощена, чтобы сделать пример, но это узкое место в реальном коде и Мне нужно сделать его параллельным. Пожалуйста помоги.
ваш код работает на Python 3.3 как есть – jfs
Я тестировал свои коды на Python 3.5.2, и он работал хорошо. Большое спасибо всем вашим ответам. – user2028191