【发布时间】:2013-06-29 11:36:31
【问题描述】:
我想让我的类方法并行运行,但它只会产生某种我无法解决的错误。 我的代码是:
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 上按原样运行
-
我在 Python 3.5.2 上测试了我的代码,它运行良好。非常感谢您的所有回答。
标签: python class parallel-processing class-method concurrent.futures