Я уверен, что это ошибка новобранец, но я не могу понять, что я делаю неправильно с многопроцессорной обработкой. У меня есть этот код (который просто сидит вокруг и не делает)многопроцессорный пул висит и не может выйти из приложения
if __name__ == '__main__':
pool = Pool(processes=4)
for i, x in enumerate(data):
pool.apply_async(new_awesome_function, (i, x))
pool.close()
pool.join()
данных является список ([1,2,3,4,5]), и я пытаюсь взять список отправки каждого предмета выполняться с несколькими процессорами, но когда я завершаю свою рабочую команду в функцию и отправляю этот код, она ничего не делает (когда я вызываю эту функцию без кода выше, она отлично работает). Поэтому я думаю, что я использую многопроцессорную обработку неправильно (хотя я взял примеры с сайтов), любые предложения?
Обновление: Я заметил, что не могу даже вырваться из него, когда он зависает с помощью control-c .., который всегда работает, чтобы выйти из моих багги программ. Я посмотрел на python2.5 multiprocessing Pool и попытался следовать советам и добавил импорт внутри своего оператора if, но не повезло
Обновление2: Извините, только что понял, ответ на этот вопрос ниже, что команда работает, но это не кажется прекратить программу или позволить мне выйти из игры.
Ваша проблема, вероятно, в 'my_awesome_function'. Я думаю, вам нужно показать нам эту функцию. –
Я только что опубликовал код и ожидаемый результат (который работает до того, как я добавил многопроцессорность). – Lostsoul
Его так странно, как правило, я получаю сообщение об ошибке, которое просто ничего не будет делать и зависает. Сначала он запускался, но не выходил (это был простой пример), но после того, как я поместил свой полный код в никуда, и он все равно не позволяет мне выйти. Я попытался отложить отладочные операторы печати, но ни один из них не вызвал (даже те, что были вне оператора if – Lostsoul