#python #python-3.x #python-multiprocessing
#python #python-3.x #python-многопроцессорная обработка
Вопрос:
Я пытаюсь использовать многопроцессорную обработку Python для написания некоторого параллельного кода. К сожалению, похоже, что это вообще не работает, как только код попадает в инициализацию пула. Он отлично работает в режиме отладки, но застревает при нормальной работе, и мне приходится вручную завершать его, чтобы остановить.
Вместо этого я пытался использовать многопроцессорную библиотеку, но безрезультатно. Я несколько дней бродил по Интернету, пытаясь найти что-нибудь, что помогло бы, но безрезультатно.
from multiprocessing import Pool
def foo(x):
return x
if __name__ == '__main__':
print('starting')
pool = Pool(1)
print('pool created')
result = pool.map(foo,[1,2,3])
print('done mapping')
print(result)
pool.close()
pool.join()
print('final done')
Я ожидал, что результат будет таким:
starting
pool created
done mapping
[1, 2, 3]
final done
Это то, что я получаю, когда запускаю с помощью встроенного отладчика WIng IDE. Когда я запускаю программу в обычном режиме, я получаю следующее:
starting
За которым следует бесконечный цикл, который блокирует меня.
Дайте мне знать, если мне нужно что-нибудь добавить к этому сообщению, это мой первый, и я не привык к этим форумам.
Я использую Windows 10 Education 1803 build 17134.706 на ноутбуке.
Комментарии:
1. Невозможно воспроизвести. Для меня это работает нормально.
2. Какую ОС вы используете? Я добавлю это, но я использую Windows на четырехъядерном ноутбуке.
3. это выглядит довольно стандартным использованием модуля, и я много раз делал подобные вещи в Linux и OSX, поэтому я предполагаю, что это проблема, связанная с конкретной ОС. может быть, попробуйте установить другую версию Python?
4. (просто для подтверждения, я попробовал ваш код на Python 3.7.3 и 2.7.16, и оба были в порядке под Linux)
5. Какая именно версия Python? Вы пробовали запускать его с терминала?