【发布时间】:2017-06-21 19:31:48
【问题描述】:
有人能解释一下下面的代码有什么问题吗
from multiprocessing import Pool
def sq(x):
yield x**2
p = Pool(2)
n = p.map(sq, range(10))
我收到以下错误
MaybeEncodingError Traceback(最近调用 最后)在() 5 p = 池(2) 6 ----> 7 n = p.map(sq, range(10))
/home/devil/anaconda3/lib/python3.4/multiprocessing/pool.py 在 地图(自我,函数,可迭代,块大小) 258 在返回的列表中。 259''' --> 260 return self._map_async(func, iterable, mapstar, chunksize).get() 261 262 def starmap(self, func, iterable, chunksize=None):
/home/devil/anaconda3/lib/python3.4/multiprocessing/pool.py 在 获取(自我,超时) 第606章 607 其他: --> 608 提高 self._value 609 610 def_set(自我,我,obj):
MaybeEncodingError:发送结果时出错:'[, ]'。原因: 'TypeError("can't pickle generator objects",)'
提前非常感谢。
【问题讨论】:
-
把yield改成return怎么样?
-
我试图避免存储值。
-
yield 会尝试保存该值,而 return 只会返回该值并忘记它。但是 yield 不起作用。
标签: python multiprocessing generator yield