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

 更新时间:2015年07月08日 11:41:08   作者:DarkBull  
这篇文章主要介绍了Python中atexit模块的基本使用示例,示例代码基于Python2.x版本,注意其和Python3的兼容性,需要的朋友可以参考下

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

注:如果程序是非正常crash,或者通过os._exit()退出,注册的回调函数将不会被调用。

我们也可以通过sys.exitfunc来注册回调,但通过它只能注册一个回调,而且还不支持参数。所以建议大家使用atexit来注册回调函数。但千万不要在程序中同时使用这两种方式,否则通过atexit注册的回调可能不会被正常调用。其实通过查阅atexit的源码,你会发现原来它内部是通过sys.exitfunc来实现的,它先把注册的回调函数放到一个列表中,当程序退出的时候,按先进后出的顺序调用注册的回调。如果回调函数在执行过程中抛出了异常,atexit会打印异常的文字信息,并继续执行下一下回调,直到所有的回调都执行完毕,它会重新抛出最后接收到的异常。

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

下面是一个例子,展示了atexit模块的使用:
 

import atexit
 
def exit0(*args, **kwarg):
  print 'exit0'
  for arg in args:
    print ' ' * 4, arg
 
  for item in kwarg.items():
    print ' ' * 4, item
 
def exit1():
  print 'exit1'
  raise Exception, 'exit1'
 
def exit2():
  print 'exit2'  
 
atexit.register(exit0, *[1, 2, 3], **{ "a": 1, "b": 2, })
atexit.register(exit1)
atexit.register(exit2)
 
@atexit.register
def exit3():
  print 'exit3'
 
if __name__ == '__main__':
  pass

下面是程序运行的结果,可以看到回调函数执行的顺序与它们被注册的顺序刚才相反。

201578113956933.jpg (513×365)

相关文章

  • Python Pandas list列表数据列拆分成多行的方法实现

    Python Pandas list列表数据列拆分成多行的方法实现

    这篇文章主要介绍了Python Pandas list(列表)数据列拆分成多行的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • Python创建高强度密码生成工具方法实例

    Python创建高强度密码生成工具方法实例

    这篇文章主要为大家介绍了Python创建高强度密码生成工具方法实例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • Python小白不正确的使用类变量实例

    Python小白不正确的使用类变量实例

    在本篇内容里,小编给各位整理了关于Python小白不正确的使用类变量实例内容,有兴趣的朋友们可以学习下。
    2020-05-05
  • Django发送邮件功能实例详解

    Django发送邮件功能实例详解

    在本篇文章里小编给大家整理了关于Django发送邮件功能的详细内容,有需要的朋友们可以参考学习下。
    2019-09-09
  • 如何安装并使用conda指令管理python环境

    如何安装并使用conda指令管理python环境

    这篇文章主要介绍了如何使用conda指令管理python环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • Pytorch转onnx、torchscript方式

    Pytorch转onnx、torchscript方式

    这篇文章主要介绍了Pytorch转onnx、torchscript方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • Django 自定义404 500等错误页面的实现

    Django 自定义404 500等错误页面的实现

    这篇文章主要介绍了Django 自定义404 500等错误页面的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • python字符串运算符详情

    python字符串运算符详情

    这篇文章主要介绍了 python字符串运算符详情,在编程里,用的最多的就是字符串,字符串同时也是各类数据的中转站,下文基于python的相关资料介绍字符串运算符,需要的小伙伴可以参考一下
    2022-04-04
  • Python获取当前路径实现代码

    Python获取当前路径实现代码

    这篇文章主要介绍了 Python获取当前路径实现代码的相关资料,需要的朋友可以参考下
    2017-05-05
  • 如何用python获取到照片拍摄时的详细位置(附源码)

    如何用python获取到照片拍摄时的详细位置(附源码)

    其实我们平时拍摄的照片里,隐藏了大量的信息,下面这篇文章主要给大家介绍了关于如何用python获取到照片拍摄时的详细位置,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-12-12

最新评论