python - 在函数内运行代码时出现 PicklingError
问题描述
我multiprocessing
在 python 中运行一个非常基本的命令。我刚刚尝试在 shell 中运行以下脚本。一个错误,一个没有。
from multiprocessing import Pool
def main():
mylist = ['Hello', 'You', 'Are', 'Human']
def cube(x):
return {'This': x}
pool = Pool(processes=4)
results = [pool.apply_async(cube, args=(x,)) for x in mylist]
output = [p.get() for p in results]
return output
main()
这将返回以下错误(也尝试过if __name__ == '__main__'
,同样的错误):
Exception in thread Thread-2:
Traceback (most recent call last):
File "/apps/Linux64/python2.7/lib/python2.7/threading.py", line 551, in __bootstrap_inner
self.run()
File "/apps/Linux64/python2.7/lib/python2.7/threading.py", line 504, in run
self.__target(*self.__args, **self.__kwargs)
File "/apps/Linux64/python2.7/lib/python2.7/multiprocessing/pool.py", line 319, in _handle_tasks
put(task)
PicklingError: Can't pickle <type 'function'>: attribute lookup __builtin__.function failed
然后我跑了这个
mylist = ['Hello', 'You', 'Are', 'Human']
def cube(x):
return {'This': x}
pool = Pool(processes=4)
results = [pool.apply_async(cube, args=(x,)) for x in mylist]
output = [p.get() for p in results]
print output
我得到了:
[{'This': 'Hello'}, {'This': 'You'}, {'This': 'Are'}, {'This': 'Human'}]
解决方案
推荐阅读
- bash - 在 bash 中搜索并写入一个非常大的文件的行
- javascript - 刷新缓存时设置动态图像比例中断的脚本
- snmp - net-snmp 标量的缓慢注册
- c# - 使用流利的 nhibernate 排除私有字段
- python - 如何将我的python文件保存在特定文件夹中
- amazon-web-services - 使用 kibana 连接到远程弹性搜索时出现身份验证错误?
- model - UML 唯一实体
- raspberry-pi - 无法通过以太网连接连接到 Raspberry Pi
- java - 方法在被子类覆盖的父级中引发异常
- nginx - Nginx 基本身份验证不适用于某些网址