当用户使用Ctrl-C时保存程序状态

4

在Python中,当用户调用Ctrl-C时,会发生什么?我有可能保存程序状态吗?

那么上下文管理器呢?__exit__()部分是否会被执行?

3个回答

6

4
这就是 atexit 模块的用途。你可以注册多个退出处理程序。通过运行此程序并观察到消息显示,您可以看到其工作原理:
import atexit

@atexit.register
def exithandler():
    print("Exit trapped!")

if __name__ == '__main__':
    while True:
        pass

0
我只是提一下 signal,它也是一个内置函数,可以处理 Ctrl+C 和许多其他信号,如 SIGHUP 等。
import signal

def signal_handler(signal, frame):
    # Do work
    # Thread cleanup
    # pickle program state
    # remove(pidfile) # as an example
    exit(0)

signal.signal(signal.SIGINT, signal_handler)

这只是一个可以处理众多信号的广泛框架示例。
这里是一份您可以捕获的一些信号列表。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接