Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
多处理python。错误'';dict';对象不可调用';_Python_Multiprocessing_Python Multiprocessing - Fatal编程技术网

多处理python。错误'';dict';对象不可调用';

多处理python。错误'';dict';对象不可调用';,python,multiprocessing,python-multiprocessing,Python,Multiprocessing,Python Multiprocessing,我正在尝试在我的类中运行多进程方法。该方法返回一个字典。我不明白为什么会出现错误“TypeError:“dict”对象不可调用”。我见过线程说实例方法不能被pickle,需要手动pickle/unpickle。然而,我没有在这里得到这个错误,我想知道为什么。我只想多处理我的一个实例方法,并在另一个实例方法中使用结果。附件是最低限度的工作示例 #/usr/bin/python from multiprocessing import Pool

我正在尝试在我的类中运行多进程方法。该方法返回一个字典。我不明白为什么会出现错误“TypeError:“dict”对象不可调用”。我见过线程说实例方法不能被pickle,需要手动pickle/unpickle。然而,我没有在这里得到这个错误,我想知道为什么。我只想多处理我的一个实例方法,并在另一个实例方法中使用结果。附件是最低限度的工作示例

            #/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,现在它正在工作。