У меня есть программа, которая может иметь длительное выполнение. В основном модуле у меня есть следующее:
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. Если пользователь хочет выйти из основного потока, он может выполнить очистку и убить дочерний поток.
Есть ли более простой способ?