python使用atexit在程序退出时清理资源,pythonatexit,当进程被杀死时,atex


当进程被杀死时,atexit绑定的函数不会执行。下面的脚本显示如何强制atexit绑定函数执行。

#!/usr/bin/env pythonfrom signal import signal, SIGTERMfrom sys import exitimport atexitdef cleanup():    print "Cleanup"if __name__ == "__main__":    from time import sleep    atexit.register(cleanup)    # Normal exit when killed    signal(SIGTERM, lambda signum, stack_frame: exit(1))    sleep(10)

你也可以看一传递其它信号 (比如SIGINT在KeyboardInterrupt时触发).

评论关闭