Ошибка утверждения в многопроцессорном пуле 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()
близко()
Запрещает отправку любых других задач в пул. Как только все задачи будут выполнены, рабочие процессы завершатся.
Конечно, вы больше не можете пользоваться бассейном, вы закрыли его.