我有一个使用多处理的地图的简单示例。但即便如此,我也无法正常运行。
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终止。
我应该如何修复我的示例才能使其正常工作?
答案 0 :(得分:1)
从我对多处理奇怪世界的研究中确定......
你尝试这样做的方式还不够。以下是我如何设法将其拉下来。
import multiprocessing as mp
import time
def theGenerator():
for number in xrange(10):
yield number
def processNumber(x):
return x*2
def multiprocessThings():
pool = mp.Pool()
gen = theGenerator()
result = pool.map(processNumber, gen)
print result
if __name__ == "__main__":
multiprocessThings()
time.sleep(10)
将其保存在任何地方,然后双击它。
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
显然,出于某种原因,这种类型的东西在翻译中不起作用。