У меня есть программа Python, в которой есть несколько процессов (пока только 2) и потоков (2 на процесс ). Я хотел бы перехватить каждое исключение и особенно аккуратно закрыть мою программу с помощью Ctrl + c, но я не могу заставить ее работать. Каждый раз, когда возникает исключение, программа останавливается, но не закрывается должным образом, в результате чего командная строка становится непригодной для использования.
Пока что я пробовал использовать псевдокод:
try:
for process in processes:
process.join()
except:
pass #Just to suppress error-messages, will be removed later
finally:
for process in processes:
process.terminate()
Но, как я уже сказал, безуспешно. Также обратите внимание, что я получаю сообщение об ошибке Exception для обоих процессов, так что они оба, я полагаю, остановлены?
Возможно, мне также следует упомянуть, что большинство потоков заблокировано при прослушивании канала.
РЕДАКТИРОВАТЬ
Итак, я почти заработал. Мне нужно было попробовать:
каждый поток и убедиться, что потоки соединены правильно. Есть только один недостаток: Исключение KeyboardInterrupt в
при завершении работы. Это поднимается в основном потоке основного процесса. Этот поток уже завершен, что означает, что он прошел последнюю строку кода.