Ошибка утверждения в многопроцессорном пуле Python в интерпретаторе

Я пишу пример программы для тестирования использования многопроцессорного пула рабочих в Python 2.7.2+

Это код, который я написал в интерпретаторе Ubuntu Python

>>> 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: встроенная функция поиска атрибутов.

Кто-нибудь может мне помочь?

Спасибо

1 ответ

Решение

Вы ввели:

>>> pool.close()

из документов:

близко()

Запрещает отправку любых других задач в пул. Как только все задачи будут выполнены, рабочие процессы завершатся.

Конечно, вы больше не можете пользоваться бассейном, вы закрыли его.

Другие вопросы по тегам