Comando Python: Catch Ctrl-C. Prompt "realmente quer sair (y / n)", retomar a execução se não houver

Eu tenho um programa que pode ter uma longa execução. No módulo principal, tenho o seguinte:

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()

Isso funciona bem, mas eu gostaria da possibilidade de pausar a execução ao capturar o SIGINT, avisando o usuário se eles realmente gostariam de sair, e continuando de onde parei em run_program () se eles decidirem que não querem sair.

A única maneira que posso pensar em fazer isso é executar o programa em um thread separado, mantendo o thread principal esperando por ele e pronto para capturar o SIGINT. Se o usuário quiser sair do thread principal pode fazer a limpeza e matar o segmento filho.

Existe uma maneira mais simples?

questionAnswers(1)

yourAnswerToTheQuestion