перерывы клавиатуры в многопроцессорных пулах с помощью Python
задача:
В данном коде Python создается пул, и предпринимается попытка обрабатывать keyboard Interrupts с использованием блока Try-Except. Однако соответствующий код в блоке никогда не выполняется, оставляя программу висящим. Результаты = pool.map (Mlosly_square, Range (40)) кроме keyboardintrupt: pool.terminate () Печать («Вы отменили программу!») sys.exit (1)
try:
results = pool.map(slowly_square, range(40))
except KeyboardInterrupt:
pool.terminate()
print("You cancelled the program!")
sys.exit(1)
Эта проблема вызвана ошибкой в Python, где клавиатура не отправляется при ожидании условия в Trinding.condition.wait (). В многопрофильной библиотеке в пуле используется переменная условия, чтобы ждать результатов операции Map (). Когда происходит прерывание клавиш, переменная условия wait () не возвращается, тем самым предотвращая прерывание от прерывания. Это может быть достигнуто путем замены вызова map () на map_async (). Get (timeout), где тайм -аут установлен на большое значение.
results = pool.map_async (Mlowly_square, range (40). Keyboardintrupt не был обработан. Это позволяет за исключением блока выполнять, обеспечивая завершение бассейна и изящное управление прерыванием.]
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3