Могу ли я предотвратить перехват функции KeyboardInterrupt и SystemExit в Python?

Я пишу код на Python примерно так:

import sys
try:
    for x in large_list:
        function_that_catches_KeyboardInterrupt(x)
except KeyboardInterrupt:
    print "Canceled!"
    sys.exit(1)

Когда я пытаюсь прервать цикл, мне в основном нужно удерживать Control + C долго достаточно, чтобы отменить каждый вызов функции для всех элементов large-list , и только после этого моя программа завершится.

Могу ли я как-нибудь предотвратить перехват функции KeyboardInterrupt, чтобы я мог ее отловить сам? Единственный способ, который я могу придумать, - это злоупотребить потоковой передачей, создав отдельный поток только для вызова функции, но это кажется чрезмерным.

Правка: я проверил ошибочный код (который я не могу легко изменить), и на самом деле он использует пустой , кроме: , поэтому даже sys.exit (1) является перехвачено как исключение SystemExit . Как мне выйти из простого кроме: блока и выйти из моей программы?

6
задан Ryan C. Thompson 29 January 2012 в 00:59
поделиться