Чтобы сделать это правильно и точно так, как вы хотите, это немного сложно.
Как правило, вы хотите перехватить Ctrl-C, установить флаг и продолжить до начала цикла (или конца), где вы проверяете этот флаг. Это можно сделать с помощью модуля signal
. К счастью, кто-то уже сделал это, и вы можете использовать код в примере связанный .
Редактировать : Исходя из вашего комментария ниже, типичное использование класса BreakHandler
:
ih = BreakHandler()
ih.enable()
for x in big_set:
complex_operation_1()
complex_operation_2()
complex_operation_3()
# Check whether there was a break.
if ih.trapped:
# Stop the loop.
break
ih.disable()
# Back to usual operation