Я пишу код на 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
. Как мне выйти из простого кроме:
блока и выйти из моей программы?