Сценарий многопроцессорной обработки Python, по-видимому, без ошибок
Я пытаюсь использоватьmultiprocessing
пакет для вызова функции (давайте назовем ееmyfunc
) параллельно, конкретно используяpool.map
то естьpool.map(myfunc, myarglist)
, Когда я просто перехожуmyarglist
без использованияmultiprocessing
нет ошибок, что должно быть, потому что все операции вmyfunc
называются в пределахtry
блок. Тем не менее, когда я вызываю функцию с помощьюpool.map
скрипт постоянно останавливается, то есть перестает печатать «myfunc done!» оператор в моей функции и процессы перестают использовать процессоры, но он никогда не возвращаетсяresultlist
, Я использую Python 2.7 из терминала в Ubuntu 12.04. Что может вызвать это, и как я должен исправить / устранить проблему?
cpu_count = int(multiprocessing.cpu_count())
pool = Pool(processes = cpu_count)
resultlist = pool.map(myfunc, myarglist)
pool.close()
Обновить Одной из проблем при использовании многопроцессорной обработки может быть размер объекта, если вы думаете, что это может быть проблемой, посмотрите этоответ, Как отмечается в ответе: «Если это [решение] не работает, возможно, материал, который вы возвращаете из своих функций, не может быть рассортирован и, следовательно, не может правильно пройти через очереди». Многопроцессорность передает объекты между процессами путем их травления. Оказывается, у одного или двух моих предметов был суп изBeautifulSoup
что бы не засолить.