【发布时间】:2013-05-21 15:55:51
【问题描述】:
我有一个使用多处理的简单地图示例。但即使这样我也无法正确运行。
import multiprocessing
p = multiprocessing.Pool()
rere = range(50)
print p.map(lambda x: x+1, rere)
它会打印这个异常:
Exception in thread Thread-3:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 808, in __bootstrap_inner
self.run()
File "/usr/lib/python2.7/threading.py", line 761, in run
self.__target(*self.__args, **self.__kwargs)
File "/usr/lib/python2.7/multiprocessing/pool.py", line 342, in _handle_tasks
put(task)
PicklingError: Can't pickle <type 'function'>: attribute lookup __builtin__.function failed
并且无法使用 Ctrl+C 终止。
我应该如何修复我的示例以使其正常工作?
【问题讨论】:
-
是的,对不起,我开枪了。它与 multiprocessing.pool.map 的工作方式有关,
lambda x: x+1部分必须是可腌制的,而不是函数,我们都需要更多的实验! -
stackoverflow.com/questions/8804830/… 看看这个,几乎一模一样
-
将函数声明为模块中的顶级我得到这个:AttributeError:'module'对象没有属性'f'(当然我的函数被称为f,它声称它不存在出于某种原因)。
标签: python python-2.7 map multiprocessing