Python: поймать команду Ctrl-C. Подсказка «действительно хочу выйти (да / нет)», возобновить выполнение, если нет
У меня есть программа, которая может иметь длительное исполнение. В основном модуле у меня есть следующее:
import signal
def run_program()
...time consuming execution...
def Exit_gracefully(signal, frame):
... log exiting information ...
... close any open files ...
sys.exit(0)
if __name__ == '__main__':
signal.signal(signal.SIGINT, Exit_gracefully)
run_program()
Это хорошо работает, но ямне понравилась возможность приостановить выполнение при перехвате SIGINT, запросить пользователя, если он действительно хотел бы выйти, и возобновить с того места, где я остановился в run_program (), если они решат, что не хотятне хочу бросать
Единственный способ, которым я могу думать об этом, - запустить программу в отдельном потоке, заставив основной поток ждать его и готовый перехватить SIGINT. Если пользователь хочет выйти из основного потока, он может выполнить очистку и уничтожить дочерний поток.
Есть ли более простой способ?