深入理解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实现的下载网页源码功能示例
Jun 13 Python
详解django中自定义标签和过滤器
Jul 03 Python
itchat和matplotlib的结合使用爬取微信信息的实例
Aug 25 Python
python3调用百度翻译API实现实时翻译
Aug 16 Python
Python 做曲线拟合和求积分的方法
Dec 29 Python
Python XML转Json之XML2Dict的使用方法
Jan 15 Python
windows10环境下用anaconda和VScode配置的图文教程
Mar 30 Python
Python3自动生成MySQL数据字典的markdown文本的实现
May 07 Python
Python基于pandas爬取网页表格数据
May 11 Python
教你使用Sublime text3搭建Python开发环境及常用插件安装另分享Sublime text3最新激活注册码
Nov 12 Python
python 实现数据库中数据添加、查询与更新的示例代码
Dec 07 Python
Python利用Turtle绘制哆啦A梦和小猪佩奇
Apr 04 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
php中使用session_set_save_handler()函数把session保存到MySQL数据库实例
2014/11/06 PHP
thinkphp模板继承实例简述
2014/11/26 PHP
javascript+css 网页每次加载不同样式的实现方法
2009/12/27 Javascript
ImageZoom 图片放大镜效果(多功能扩展篇)
2010/04/14 Javascript
Javascript模块化编程(一)模块的写法最佳实践
2013/01/17 Javascript
jquery交替变换颜色的三种方法 实例代码
2013/11/19 Javascript
JS阻止用户多次提交示例代码
2014/03/26 Javascript
JavaScript实现获取dom中class的方法
2015/02/09 Javascript
阿里巴巴技术文章分享 Javascript继承机制的实现
2016/01/14 Javascript
jQuery中队列queue()函数的实例教程
2016/05/03 Javascript
原生JS实现匀速图片轮播动画
2016/10/18 Javascript
Javascript 数组去重的方法(四种)详解及实例代码
2016/11/24 Javascript
Nodejs实现文件上传的示例代码
2017/09/26 NodeJs
AngularJS自定义过滤器用法经典实例总结
2018/05/17 Javascript
js数组去重的方法总结
2019/01/18 Javascript
Vue v-for循环之@click点击事件获取元素示例
2019/11/09 Javascript
Vue切换div显示隐藏,多选,单选代码解析
2020/07/14 Javascript
基于Vue2实现移动端图片上传、压缩、拖拽排序、拖拽删除功能
2021/01/05 Vue.js
[02:27]2018DOTA2亚洲邀请赛趣味视频之钓鱼大赛 谁是垂钓冠军?
2018/04/05 DOTA
Python中import导入上一级目录模块及循环import问题的解决
2016/06/04 Python
node.js获取参数的常用方法(总结)
2017/05/29 Python
解决python写入带有中文的字符到文件错误的问题
2019/01/31 Python
关于不懂Chromedriver如何配置环境变量问题解决方法
2019/06/12 Python
Python跳出多重循环的方法示例
2019/07/03 Python
Python 文件数据读写的具体实现
2020/01/24 Python
详解django使用include无法跳转的解决方法
2020/03/19 Python
python 实现表情识别
2020/11/21 Python
信息服务专业毕业生求职信
2014/03/02 职场文书
我的长生果教学反思
2014/04/28 职场文书
电子信息工程自荐信
2014/05/26 职场文书
国际商务英语专业求职信
2014/07/08 职场文书
预备党员转正思想汇报
2014/09/26 职场文书
开场白怎么写
2015/06/01 职场文书
领导欢送会主持词
2015/07/06 职场文书
RPM包方式安装Oracle21c的方法详解
2021/08/23 Oracle
使用RedisTemplat实现简单的分布式锁
2021/11/20 Redis