深入理解python中的atexit模块


Posted in Python onMarch 07, 2017

atexit 模块介绍

python atexit 模块定义了一个 register 函数,用于在 python 解释器中注册一个退出函数,这个函数在解释器正常终止时自动执行,一般用来做一些资源清理的操作。 atexit 按注册的相反顺序执行这些函数; 例如注册A、B、C,在解释器终止时按顺序C,B,A运行。

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

官方文档:https://docs.python.org/3.5/library/atexit.html

注册 退出函数

atexit.register(func, *args, **kargs)

将func作为要在终止时执行的函数。任何要传递给func的可选参数必须作为参数传递给register() 。可以多次注册相同的函数和参数。

当程序退出的时候,按先进后出的顺序调用注册的函数。如果退出函数在执行过程中抛出了异常,atexit会打印异常的信息,并继续执行下一下回调,直到所有退出函数执行完毕,它会重新抛出最后接收到的异常。

示例

通过装饰器的方式:

#!/usr/bin/env python
from atexit import register
def main():
 print('Do something.')
@register
def _atexit():
 print('Done.')
if __name__ == '__main__':
 main()

非装饰器的方式:

#!/usr/bin/env python
from atexit import register
def main():
 #pass
 print('XX')
def goodbye(name, adjective):
 print('Goodbye, %s, it was %s to meet you.' % (name, adjective))
 
register(goodbye, 'Donny', 'nice')
# or:
# register(goodbye, adjective='nice', name='Donny')
if __name__ == '__main__':
 main()

删除退出函数[一般用不到]

> atexit.unregister(func)
>

从解释器关闭时运行的函数列表中删除func。 调用unregister()后,当解释器关闭时,即使它被注册了多次,func也不会被调用。如果func没有注册过的话,则unregister()什么也不会做。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
Python 实现购物商城,含有用户入口和商家入口的示例
Sep 15 Python
Python编程使用NLTK进行自然语言处理详解
Nov 16 Python
用Python实现KNN分类算法
Dec 22 Python
Request的中断和ErrorHandler实例解析
Feb 12 Python
Python Requests模拟登录实现图书馆座位自动预约
Apr 27 Python
如何在Python中实现goto语句的方法
May 18 Python
在cmd中查看python的安装路径方法
Jul 03 Python
Python完成哈夫曼树编码过程及原理详解
Jul 29 Python
Python中typing模块与类型注解的使用方法
Aug 05 Python
Python3安装pip工具的详细步骤
Oct 14 Python
python实现手势识别的示例(入门)
Apr 15 Python
Python调用OpenCV实现图像平滑代码实例
Jun 19 Python
Python 备份程序代码实现
Mar 06 #Python
Python与Java间Socket通信实例代码
Mar 06 #Python
python使用arcpy.mapping模块批量出图
Mar 06 #Python
python与php实现分割文件代码
Mar 06 #Python
windows系统下Python环境的搭建(Aptana Studio)
Mar 06 #Python
windows下安装Python和pip终极图文教程
Mar 05 #Python
python爬虫的工作原理
Mar 05 #Python
You might like
SONY ICF-SW7600的电路分析
2021/03/02 无线电
Referer原理与图片防盗链实现方法详解
2019/07/03 PHP
PHP创建XML的方法示例【基于DOMDocument类及SimpleXMLElement类】
2019/09/10 PHP
基于Jquery 解决Ajax请求的页面 浏览器后退前进功能,页面刷新功能实效问题
2010/12/11 Javascript
IE的有条件注释判定IE版本详解(附实例代码)
2012/01/04 Javascript
如何使用jquery控制CSS样式,并且取消Css样式(如背景色,有实例)
2013/07/09 Javascript
JS返回上一页实例代码通过图片和按钮分别实现
2013/08/16 Javascript
使用 vue.js 构建大型单页应用
2018/02/10 Javascript
bootstrap里bootstrap动态加载下拉框的实例讲解
2018/08/10 Javascript
Angular CLI 使用教程指南参考小结
2019/04/10 Javascript
自定义Vue中的v-module双向绑定的实现
2019/04/17 Javascript
使用VueRouter的addRoutes方法实现动态添加用户的权限路由
2019/06/03 Javascript
Layui选项卡制作历史浏览记录的方法
2019/09/28 Javascript
在Vue.js中使用TypeScript的方法
2020/03/19 Javascript
[02:30]DOTA2放量测试专访海涛:呼吁保护新手玩家
2013/08/26 DOTA
[43:14]Liquid vs Optic 2018国际邀请赛淘汰赛BO3 第二场 8.21
2018/08/22 DOTA
pymongo为mongodb数据库添加索引的方法
2015/05/11 Python
windows下python虚拟环境virtualenv安装和使用详解
2019/07/16 Python
python Opencv计算图像相似度过程解析
2019/12/03 Python
浅谈python元素如何去重,去重后如何保持原来元素的顺序不变
2020/02/28 Python
Python爬虫爬取博客实现可视化过程解析
2020/06/29 Python
使用html5+css3来实现slider切换效果告别javascript+css
2013/01/08 HTML / CSS
阿联酋电子产品购物网站:Menakart
2017/09/15 全球购物
瑞典香水、须后水和美容产品购物网站:Parfym-Klick.se
2019/12/29 全球购物
建筑设计学生的自我评价
2014/01/16 职场文书
劳动模范事迹材料
2014/01/19 职场文书
甜品蛋糕店创业计划书范文
2014/02/06 职场文书
运动会标语
2014/06/21 职场文书
建筑工程造价专业自荐信
2014/07/08 职场文书
单位法定代表人授权委托书
2014/09/20 职场文书
学校领导班子对照检查材料
2014/09/24 职场文书
授权收款委托书范本
2014/10/10 职场文书
干部培训工作总结2015
2015/05/25 职场文书
2016年教师政治思想表现评语
2015/12/02 职场文书
MySQL安装后默认自带数据库的作用详解
2021/04/27 MySQL
java中为什么说子类的构造方法默认访问的是父类的无参构造方法
2022/04/13 Java/Android