我想让我的类方法并行运行,但是它只会产生某种我无法解决的错误。
我的代码是:
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以使其成为示例,但这是实际代码中的瓶颈,并且
我需要使其平行。请帮忙。
最佳答案
从docs:
尝试ThreadPoolExecutor
更新
我再次查看了您的代码,问题是函数make_readdb
是类test
的成员。您可以重构并退出此功能吗?
关于python - 为什么我不能在类方法中使用python模块current.futures?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17419879/