8

我正在编写一个示例程序来测试 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

在我得到泡菜错误之后,在我的大型数据集的工人代码池中,我试图做一些小例子并试图找出错误是什么。

我不明白为什么相同的语句 'pool.map' 不起作用,当它在上面起作用时。我想我已经正确执行了“池映射”,但我不明白原因。

这个错误是否与“PicklingError: Can't pickle: attribute lookup builtin .function failed”有关

有人可以帮我吗 ?

谢谢

4

1 回答 1

18

您输入:

>>> pool.close()

来自文档:

关闭()

防止任何更多的任务被提交到池中。完成所有任务后,工作进程将退出。

当然你不能再使用游泳池了,你把它关了。

于 2012-04-29T00:54:55.757 回答