多处理python。错误'';dict';对象不可调用';
我正在尝试在我的类中运行多进程方法。该方法返回一个字典。我不明白为什么会出现错误“TypeError:“dict”对象不可调用”。我见过线程说实例方法不能被pickle,需要手动pickle/unpickle。然而,我没有在这里得到这个错误,我想知道为什么。我只想多处理我的一个实例方法,并在另一个实例方法中使用结果。附件是最低限度的工作示例多处理python。错误'';dict';对象不可调用';,python,multiprocessing,python-multiprocessing,Python,Multiprocessing,Python Multiprocessing,我正在尝试在我的类中运行多进程方法。该方法返回一个字典。我不明白为什么会出现错误“TypeError:“dict”对象不可调用”。我见过线程说实例方法不能被pickle,需要手动pickle/unpickle。然而,我没有在这里得到这个错误,我想知道为什么。我只想多处理我的一个实例方法,并在另一个实例方法中使用结果。附件是最低限度的工作示例 #/usr/bin/python from multiprocessing import Pool
#/usr/bin/python
from multiprocessing import Pool
class test:
def __init__(self):
print "init"
def run(self):
y = {'write_bandwidth': 3768.3135113756257}
return y
def pool(self):
pool = Pool(processes=2)
result = pool.map(self.run(), range(10))
print result
if __name__ == '__main__':
t = test();
t.pool()
这是我得到的错误
init
Traceback (most recent call last):
File "/Users/preetigupta25/Documents/lab work/preeti_repos/preeti_repo/MSST_2015/economic-model/src/test3.py", line 20, in <module>
t.pool()
File "/Users/preetigupta25/Documents/lab work/preeti_repos/preeti_repo/MSST_2015/economic-model/src/test3.py", line 15, in pool
result = pool.map(self.run(), range(10))
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/multiprocessing/pool.py", line 250, in map
return self.map_async(func, iterable, chunksize).get()
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/multiprocessing/pool.py", line 554, in get
raise self._value
TypeError: 'dict' object is not callable
[Finished in 0.2s with exit code 1]
init
回溯(最近一次呼叫最后一次):
文件“/Users/preetigupta25/Documents/lab work/preeti_repos/preeti_repo/MSST_2015/economic model/src/test3.py”,第20行,in
t、 池()
文件“/Users/preetigupta25/Documents/lab work/preeti_repos/preeti_repo/MSST_2015/economic model/src/test3.py”,第15行,池中
结果=pool.map(self.run(),范围(10))
文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/multiprocessing/pool.py”,第250行,在地图中
返回self.map\u async(func,iterable,chunksize).get()
get中的文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/multiprocessing/pool.py”,第554行
提升自我价值
TypeError:“dict”对象不可调用
[在0.2秒内完成,退出代码为1]
函数签名:
def map(self, func, iterable, chunksize=None):
# coding=utf8
from multiprocessing import Pool
def f(x):
return x * x
def run(self):
y = {'write_bandwidth': 3768.3135113756257}
return y
if __name__ == '__main__':
p = Pool(5)
print(p.map(run, range(3)))
这是您的一个示例:
def map(self, func, iterable, chunksize=None):
# coding=utf8
from multiprocessing import Pool
def f(x):
return x * x
def run(self):
y = {'write_bandwidth': 3768.3135113756257}
return y
if __name__ == '__main__':
p = Pool(5)
print(p.map(run, range(3)))
结果是:
[{'write_bandwidth': 3768.3135113756257}, {'write_bandwidth': 3768.3135113756257}, {'write_bandwidth': 3768.3135113756257}]
如果您还不明白,请单击
祝你好运 函数签名:
def map(self, func, iterable, chunksize=None):
# coding=utf8
from multiprocessing import Pool
def f(x):
return x * x
def run(self):
y = {'write_bandwidth': 3768.3135113756257}
return y
if __name__ == '__main__':
p = Pool(5)
print(p.map(run, range(3)))
这是您的一个示例:
def map(self, func, iterable, chunksize=None):
# coding=utf8
from multiprocessing import Pool
def f(x):
return x * x
def run(self):
y = {'write_bandwidth': 3768.3135113756257}
return y
if __name__ == '__main__':
p = Pool(5)
print(p.map(run, range(3)))
结果是:
[{'write_bandwidth': 3768.3135113756257}, {'write_bandwidth': 3768.3135113756257}, {'write_bandwidth': 3768.3135113756257}]
如果您还不明白,请单击
祝你好运 应该是
pool.map(self.run,range(10))
?它给出了与酸洗相关的错误PicklingError:无法pickle:属性查找builtin.instancemethod失败'这可能会有所帮助,但看起来很复杂。self.run()是应该是self.run
。它不接受参数,但您给它一个(范围
)。另外,我的代码中也有这个Dict错误。我只给出了一个字符串作为参数,而不是dict,它现在正在工作。应该是pool.map(self.run,range(10))
?这会导致与酸洗相关的错误PicklingError:无法pickle:属性查找builtin.instancemethod失败'这可能会有所帮助,但看起来很复杂。self.run()是应该是self.run
。它不接受参数,但您给它一个(范围
)。另外,我的代码中也有这个Dict错误。我设法只给出一个字符串作为参数,而不是dict,现在它正在工作。