当前位置:编程学堂 > Python 中atexit 模块的基本使用示例

Python 中atexit 模块的基本使用示例

  • 发布:2023-10-10 05:21

atexit 模块非常简单。它只定义了一个注册函数,用于在程序退出时注册回调函数。我们可以在这个回调函数中进行一些资源清理操作。

注意:如果程序异常崩溃或者通过os._exit()退出,注册的回调函数将不会被调用。

我们也可以通过sys.exitfunc来注册回调,但是通过它只能注册一个回调,并且不支持参数。因此,建议您使用atexit来注册回调函数。但千万不要在程序中同时使用这两个方法,否则通过atexit注册的回调可能无法正常调用。其实通过查看atexit的源码,你会发现它内部是通过sys.exitfunc来实现的。它首先将注册的回调函数放入列表中。当程序退出时,注册的回调函数按照先进后出的顺序被调用。打回来。如果回调函数在执行过程中抛出异常,atexit会打印异常文本信息并继续执行下一个回调,直到所有回调执行完毕,并且会重新抛出上次收到的异常。

如果您使用的python版本是2.6,您还可以使用装饰器语法来注册回调函数。

以下是atexit模块的使用示例:

导入atexit
 
def exit0(*args, **kwarg):
  打印“退出0”
  对于 args 中的 arg:
    打印'' * 4,arg
 
  对于 kwarg.items() 中的项目:
    打印 ' ' * 4,项目
 
def exit1():
  打印“退出1”
  引发异常,'exit1'
 
def exit2():
  打印“退出2”
 
atexit.register(exit0, *[1, 2, 3], **{ "a": 1, "b": 2, })
atexit.注册(退出1)
atexit.注册(退出2)
 
@atexit.注册
def exit3():
  打印“退出3”
 
如果 __name__ == '__main__':
  经过
登录后复制

以下是程序运行结果。您可以看到回调函数的执行顺序与注册顺序相反。

相关文章

热门推荐