我有一个可能有长时间执行的程序.在主模块中,我有以下内容:
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()
Run Code Online (Sandbox Code Playgroud)
这样可以正常工作,但是我希望能够在捕获SIGINT时暂停执行,提示用户是否真的想要退出,如果他们决定不想退出,则继续在run_program()中停止.
我能想到这样做的唯一方法是在一个单独的线程中运行程序,保持主线程等待它并准备捕获SIGINT.如果用户想要退出主线程可以做清理并杀死子线程.
有更简单的方法吗?