Ответ 1
Нажмите Ctrl-Z, чтобы приостановить процесс Python, затем kill %1
, чтобы убить его. Вы также можете просто нажать Ctrl-\ (обратная косая черта), но это может привести к тому, что процесс оставит основной файл.
Я использую модуль многопроцессорности для выполнения параллельной обработки в моей программе. Когда я тестирую его, я часто хочу, чтобы программа была убита раньше, когда я заметил ошибку, так как требуется некоторое время, чтобы выполнить ее до завершения. В моей Linux-среде я запускаю свою программу с терминала и использую Ctrl + C, чтобы убить ее. При многопроцессорной обработке это приводит к тому, что все процессы будут убиты, но я никогда не получаю приглашение bash назад и должен закрыть терминал и открыть новый (и вернуться к моему рабочему каталогу), что очень раздражает. Есть ли способ обойти это?
Нажмите Ctrl-Z, чтобы приостановить процесс Python, затем kill %1
, чтобы убить его. Вы также можете просто нажать Ctrl-\ (обратная косая черта), но это может привести к тому, что процесс оставит основной файл.
Но подождите... нет способа обработать событие KeyboardException, чтобы убить процессы в пуле?
Я пробовал:
except KeyboardInterrupt as e: # Ctrl-C
print("Killing all the children in the pool.")
pool.close()
pool.terminate()
return 1
# raise e
Но это не работает.
Вы можете использовать экран, чтобы запустить процесс, а затем убить сеанс экрана, когда вам нужно. Он не выведет весь терминал bash. Для хорошего руководства по экрану см.: