深入理解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中集合的内建函数和内建方法学习教程
Aug 19 Python
Python编程使用*解包和itertools.product()求笛卡尔积的方法
Dec 18 Python
简单实现python收发邮件功能
Jan 05 Python
python用户评论标签匹配的解决方法
May 31 Python
详解如何为eclipse安装合适版本的python插件pydev
Nov 04 Python
python识别文字(基于tesseract)代码实例
Aug 24 Python
详解numpy矩阵的创建与数据类型
Oct 18 Python
python装饰器相当于函数的调用方式
Dec 27 Python
基于python 等频分箱qcut问题的解决
Mar 03 Python
python保留格式汇总各部门excel内容的实现思路
Jun 01 Python
python 实现ping测试延迟的两种方法
Dec 10 Python
python基础学习之生成器与文件系统知识总结
May 25 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遍历数组的方法汇总分析
2013/06/08 PHP
我整理的PHP 7.0主要新特性
2016/01/07 PHP
PHP中phar包的使用教程
2017/06/14 PHP
JavaScript基本概念初级讲解论坛贴的学习记录
2009/02/22 Javascript
javascript cookie操作类的实现代码小结附使用方法
2010/06/02 Javascript
jQuery学习笔记 操作jQuery对象 文档处理
2012/09/19 Javascript
json对象转字符串如何实现
2012/12/02 Javascript
JavaScript的事件绑定(方便不支持js的时候)
2013/10/01 Javascript
js中通过父级进行查找定位元素
2014/06/15 Javascript
javascript实现textarea中tab键的缩排处理方法
2015/06/26 Javascript
jquery实现鼠标滑过小图查看大图的方法
2015/07/20 Javascript
JavaScript如何实现在文本框(密码框)输入提示语
2015/12/25 Javascript
深入浅析JSON.parse()、JSON.stringify()和eval()的作用详解
2016/04/03 Javascript
AngularJS Bootstrap详细介绍及实例代码
2016/07/28 Javascript
JS button按钮实现submit按钮提交效果
2016/11/01 Javascript
在vue项目中使用sass语法问题
2019/07/18 Javascript
微信小程序实现点击页面出现文字
2020/09/21 Javascript
vue的$http的get请求要加上params操作
2020/11/12 Javascript
[02:23]2016国际邀请赛中国区预选赛wings晋级之路
2016/06/29 DOTA
python中的yield使用方法
2014/02/11 Python
Anaconda 离线安装 python 包的操作方法
2018/06/11 Python
python实现画一颗树和一片森林
2018/06/25 Python
Python+Selenium+phantomjs实现网页模拟登录和截图功能(windows环境)
2019/12/11 Python
Window系统下Python如何安装OpenCV库
2020/03/05 Python
使用css3背景渐变中的透明度来设置不同颜色的背景渐变
2014/03/31 HTML / CSS
HTML5给汉字加拼音收起展开组件的实现代码
2020/04/08 HTML / CSS
施华洛世奇匈牙利官网:SWAROVSKI匈牙利
2019/07/06 全球购物
公司活动策划方案
2014/01/13 职场文书
即将毕业大学生自荐信
2014/01/24 职场文书
师范毕业生求职信
2014/07/11 职场文书
后勤个人工作总结
2015/02/28 职场文书
房地产财务经理岗位职责
2015/04/08 职场文书
学校百日安全活动总结
2015/05/07 职场文书
2015年酒店年度工作总结
2015/05/23 职场文书
Win11 S Mode版本泄露 正式上线后叫做Windows 11 SE
2021/11/21 数码科技
Win11 25163.1010更新补丁KB5016904推送,测试服务验证管道(附更新修复汇总)
2022/07/23 数码科技