У меня есть программа на 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()
Но, как я ужесказал без удачи.Также обратите внимание, что я получаю сообщение об ошибке исключения для обоих процессов, поэтому я думаю, что они оба остановлены?
Может быть, я должен также упомянуть, что большинство потоков заблокированы при прослушивании канала.
РЕДАКТИРОВАТЬ Так что я почти получил это работает.Мне нужно было try:
каждый поток и убедиться, что потоки соединены правильно.Есть только один недостаток: Exception KeyboardInterrupt in <module 'threading' from '/usr/lib64/python2.7/threading.pyc'> ignored
при выключении.Это поднимается в главном потоке основного процесса.Этот поток уже завершен, что означает, что он прошел последнюю строку кода.