«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как обрабатывать прерывания клавиатуры в Python Multi-Process Pool?

Как обрабатывать прерывания клавиатуры в Python Multi-Process Pool?

Опубликовано в 2025-04-20
Просматривать:349

How to Handle Keyboard Interruptions in Multiprocessing Pools with Python?

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

]

Заявление о выпуске Эта статья воспроизводится: 1729576518 Если есть какие -либо нарушения, пожалуйста, свяжитесь с [email protected], чтобы удалить его.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3