Как остановить многопроцессорную программу python после исключения?

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

7
задан Nobody 28 September 2011 в 11:03
поделиться