深入理解python中的atexit模块

发布时间 - 2026-01-10 23:28:50    点击率:

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  # atexit  # atexit函数  # Python中atexit模块的基本使用示例  # Python利用atexit模块实现优雅处理程序退出  # 抛出  # 也不  # 要在  # 下一  # 可选  # 这篇文章  # 没有注册  # 谢谢大家  # 它会  # 会做  # 使它  # 回调  # 过程中  # 器中  # 文档  # 列表中  # 有疑问  # docs  # org  # library 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何使用Sanctum进行API认证?(SPA实战)  如何在VPS电脑上快速搭建网站?  在线制作视频的网站有哪些,电脑如何制作视频短片?  Linux系统命令中screen命令详解  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  node.js报错:Cannot find module 'ejs'的解决办法  专业商城网站制作公司有哪些,pi商城官网是哪个?  C#如何调用原生C++ COM对象详解  PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  ,网页ppt怎么弄成自己的ppt?  Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】  独立制作一个网站多少钱,建立网站需要花多少钱?  php在windows下怎么调试_phpwindows环境调试操作说明【操作】  Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  Win11怎么开启自动HDR画质_Windows11显示设置HDR选项  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法  如何获取免费开源的自助建站系统源码?  Laravel如何处理文件下载请求?(Response示例)  JavaScript如何实现错误处理_try...catch如何捕获异常?  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】  javascript基于原型链的继承及call和apply函数用法分析  如何在搬瓦工VPS快速搭建网站?  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  详解MySQL数据库的安装与密码配置  谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复  Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】  Python文本处理实践_日志清洗解析【指导】  html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】  网站制作软件免费下载安装,有哪些免费下载的软件网站?  网易LOFTER官网链接 老福特网页版登录地址  软银砸40亿美元收购DigitalBridge 强化AI资料中心布局  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  如何用西部建站助手快速创建专业网站?  中山网站推广排名,中山信息港登录入口?  如何用已有域名快速搭建网站?  Swift中循环语句中的转移语句 break 和 continue  Android利用动画实现背景逐渐变暗  Laravel中间件如何使用_Laravel自定义中间件实现权限控制  宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法  html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】  如何用y主机助手快速搭建网站?  Android使用GridView实现日历的简单功能