python多处理池解释器中的断言错误

kic*_*ich 8 python multiprocessing

我正在编写一个示例程序来测试python 2.7.2+中多工作池的使用情况

这是我在python ubuntu解释器中编写的代码

>>> from multiprocessing import Pool
>>> def name_append(first_name,last_name):
...     return first_name+" "+last_name
...

>>> from functools import partial
>>> partial_name_append=partial(name_append,'kiran')
>>> partial_name_append('acb')
'kiran acb'
>>> abc='kiran'

>>> pool=Pool(processes=4)
>>> pool.map(partial_name_append,abc)
['kiran k', 'kiran i', 'kiran r', 'kiran a', 'kiran n']
>>> pool.close()
>>> pool.join()

>>> pool.map(partial_name_append,abc)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/multiprocessing/pool.py", line 226, in map
    assert self._state == RUN
AssertionError
Run Code Online (Sandbox Code Playgroud)

在我得到pickle错误之后,在我的工作池中为大数据集编写代码,我试图做一些小例子并试图找出错误是什么.

我不明白为什么同样的语句'pool.map'不起作用,当它在上面工作时.我想我已正确执行了"池地图",但我不明白原因.

此错误与"PicklingError:无法pickle:属性查找内置 .function失败"有关

有人可以帮我吗 ?

谢谢

Sin*_*ion 18

你键入:

>>> pool.close()
Run Code Online (Sandbox Code Playgroud)

来自文档:

关()

防止将任何其他任务提交到池中.完成所有任务后,工作进程将退出.

当然你不能再使用游泳池,你关闭它.

  • 根本不要关闭游泳池(直到你不再需要它为止).你不需要`join()`池(因此也不需要关闭它)来等待来自`Pool.map()`的结果,它已经阻塞直到结果准备好了.你可以随意使用`map()`. (3认同)