У меня есть программа, которая может иметь длительное выполнение. В основном модуле у меня есть следующее:
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. Если пользователь хочет выйти из основного потока, он может выполнить очистку и убить дочерний поток.
Есть ли более простой способ?
if raw_input("Really quit? y/n").lower().startswith('y'):
кодом выхода? - person user2357112 supports Monica   schedule 08.08.2013