Python模块学习 ---- atexit

Python中的atexit模块:优雅地处理程序退出 本文介绍了Python中的 atexit 模块,包括其基本用法、示例代码以及典型应用场景。 atexit 模块提供了一种方便的方式来注册在程序退出时执行的函数,以确保程序在退出时能够优雅地进行清理工作。希望通过本文的介绍,大家能够更加深入地理解 atexit 模块的用法,并在实际的编程中灵活运用,提高程序的健壮性和稳定性。 阅读详情

    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

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

python atexit模块的使用 python atexit模块的使用 模块的简介 atexit模块主要的作用就是在程序即将结束之前执行的代码,atexit模块使用register函数用于注册程序退出时的回调函数,然后在回调函数中做一些资源清理的操作。该模块其实是一个对 sys.exitfunc 钩子( hook )的简单封装 ipm中在应用退出时释放文件锁。 简单使用: import atexit import time def run(): print("apply is run ...") def clear(): 阅读详情

相关推荐

Python程序的退出方法及示例代码

这些是常见的退出程序的方法和示例代码。根据实际需求,选择合适的方法来退出程序。在编写代码时,合理使用退出程序的方法可以提高程序的稳定性和可维护性。希望本文对你有所帮助!在编写Python程序时,有时候需要在特定条件下退出程序。本文将介绍几种常见的退出程序的方法,并提供相应的示例代码。

2301_78484069的博客 1016

Python中的atexit模块:让你的代码优雅退出

因此,为你的Python程序设计一个合理的退出流程,不仅可以提高应用的稳定性,还能让用户感受到开发者对细节的关注。一个好的戏剧不仅要有精彩的剧情,更要有完美的收尾。如果程序在关闭时不进行适当的清理工作,可能会导致资源泄露、文件未保存等问题,这些问题就像是演员在舞台上的失误,会破坏整个表演的效果。你可以把这里当作自己的家,无论是工作之余的小憩,还是寻找灵感的驿站,我都希望你能在这里找到属于你的那份快乐和满足。

master_chenchen的博客 1401

一生一芯 预学习阶段 NEMU代码学习(2)

如果 nemu_state.state == NEMU_ABORT:说明程序处于 "中止" 状态,输出 "ABORT",并且使用 ANSI_FG_RED 红色格式化显示。如果 halt_ret == 0,表示程序正常终止(触发了 "GOOD TRAP"),输出 "HIT GOOD TRAP",并使用 ANSI_FG_GREEN 绿色显示。如果要执行的指令数量 n 小于预定义的常量 MAX_INST_TO_PRINT,则将 g_print_step 置为 true,表示会逐步打印指令执行的过程。

weixin_45041054的博客 826

Python模块学习:atexit

前言 atexit模块很简单,只定义了一个register函数用于注册程序退出时的回调函数,我们可以在这个回调函数中做一些资源清理的操作。 注:如果程序是非正常crash,或者通过os._exit()退出,注册的回调函数将不会被调用。 我们也可以通过sys.exitfunc来注册回调,但通过它只能注册一个回调,而且还不支持参数。所以建议大家使用atexit来注册回调函数。但千万不要在程序中同时使用...

qq_39363022的博客 197

FTP新手必看:vsftpd 530登录错误的8种实战解决方案(附详细配置步骤)

本文针对FTP服务配置中常见的vsftpd 530登录错误,提供了8种实战解决方案。从理解错误本质入手,系统性地排查用户列表策略、PAM认证、系统黑名单、Shell限制、目录权限及DNS解析等问题,并附有详细的配置步骤与命令,帮助新手快速定位并解决登录失败难题。

ik678901的博客 696

库卡机器人外部轴配置全流程:从接线到WorkVisual 6.0实战(附避坑指南)

本文详细解析了库卡机器人外部轴配置的全流程,涵盖从硬件接线到WorkVisual 6.0软件配置的实战步骤。重点介绍了KPP驱动模块连接、电机参数匹配、安全配置激活及零点标定等关键环节,并提供了实用的避坑指南,旨在帮助工程师高效、安全地完成外部轴集成,提升工作站柔性。

weixin_29161785的博客 496

atexit函数的执行顺序_Python模块学习:atexit

前言atexit模块很简单,只定义了一个register函数用于注册程序退出时的回调函数,我们可以在这个回调函数中做一些资源清理的操作。注:如果程序是非正常crash,或者通过os._exit()退出,注册的回调函数将不会被调用。我们也可以通过sys.exitfunc来注册回调,但通过它只能注册一个回调,而且还不支持参数。所以建议大家使用atexit来注册回调函数。但千万不要在程序中同时使用这两种...

weixin_39825941的博客 137

MYSQL、ORACLE、PostgreSQL数据库对象层次及权限管理对比

本文为出于自己扩展、比较、图形化的思维路径自行总结归纳,可能有些细节不太准确,欢迎指正。MySQL、Oracle、PostgreSQL关系型数据库都有管理员用户、用户、权限管理、表函数索引等数据库对象,schema。但在数据库对象隶属层次上有差异和相同的地方。

rachel_2016的博客 1490

Python深度剖析:atexit模块的神秘面纱_atexit python(2)

模块以其独特的功能成为了不可忽视的一员。它允许开发者注册函数,以确保在程序终止时执行特定的清理任务。在日常的开发工作中,适时的资源清理是至关重要的,假设我们的程序中创建了一些临时文件,或者开启了一些网络连接,我们希望在程序结束时删除这些文件,关闭这些连接。通过这种方式,我们确保了临时目录在程序结束时被删除,避免了可能的资源泄露。模块为我们提供了一个简单而有效的解决方案。现在,无论程序是正常结束,还是因为异常而终止,模块的基本用法、实际应用案例以及一些需要注意的点。函数都会被调用,确保资源得到妥善的清理。

weixin_57992300的博客 406

告别误唤醒!S32K3xx低功耗设计避坑指南:Fast Standby模式与WISR寄存器操作详解

本文深入解析了NXP S32K3xx系列MCU在低功耗设计中常见的误唤醒问题,并提供了基于Fast Standby模式的解决方案。文章重点剖析了DCMRWF5寄存器的配置方法、WISR/WISR_64唤醒中断状态寄存器的标志位处理策略,以及如何利用32KB Standby SRAM保存唤醒状态,从而帮助开发者构建稳定可靠的汽车电子低功耗系统。

weixin_29163857的博客 361

ExoPlayer硬解码实战:如何绕过系统默认软解码提升播放性能(附完整代码)

本文深入剖析了ExoPlayer默认解码器选择机制的不确定性,并提供了通过自定义MediaCodecSelector强制启用硬解码的完整实战方案。该方案能有效解决因软解码导致的播放卡顿、黑屏花屏及高功耗问题,显著提升Android应用在各种设备上的视频播放性能与稳定性。

weixin_29295541的博客 456

2024年上海春招面试,Python深度剖析:atexit模块的神秘面纱_atexit python(2),java dubbo面试题

假设我们的程序中创建了一些临时文件,或者开启了一些网络连接,我们希望在程序结束时删除这些文件,关闭这些连接。模块允许我们注册多个清理函数。这些函数将按照与注册顺序相反的顺序执行。通过这种方式,我们确保了临时目录在程序结束时被删除,避免了可能的资源泄露。现在,无论程序是正常结束,还是因为异常而终止,函数都会被调用,确保资源得到妥善的清理。在上述代码中,我们定义了一个名为。

2401_84123584的博客 319

MATLAB2022b安装

图文并茂,手把手教会你怎么安装MATLAB2022b

1万+

2024年最新Python深度剖析:atexit模块的神秘面纱_atexit python,面试常用

print(f"临时目录 {temp_dir} 已删除")print(“清理任务1”)print(“清理任务2”)

2401_84139676的博客 481

model_optimizer将pi05端到端延时进一步优化到68.13ms了

目前在保持灵活性和性能之间找到一个较好的平衡。vit, llm仍然使用onnx->trt_engine的路径,量化可以通过https://github.com/NVIDIA/Model-Optimizer.git支持。同时支持通过cutedsl手写算子进行进一步优化denoise因为步数多,kernel launch多,因此完全通过手写融合算子实现,将所有steps进行一次大的cuda graph capture.

happyAnger6的专栏 59

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【Python】Windows跟随程序启动和关闭系统代理_python 关闭代理

在前面的文章中有做介绍,这里不着重介绍它;这里主要介绍的是内置的模块。

2401_84584324的博客 672

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Python深度剖析:atexit模块的神秘面纱_atexit python,2024年最新代码设计思路 示例

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。这些函数将按照与注册顺序相反的顺序执行。

weixin_57992300的博客 1109

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

chatgpt赋能python:Python怎么退出程序:让你轻松掌握退出Python程序的方法

本文由chatgpt生成,文章没有在chatgpt生成的基础上进行任何的修改。以上只是chatgpt能力的冰山一角。作为通用的Aigc大模型,只是展现它原本的实力。对于颠覆工作方式的ChatGPT,应该选择拥抱而不是抗拒,未来属于“会用”AI的人。🧡AI职场汇报智能办公文案写作效率提升教程 🧡专注于AI+职场+办公方向。下图是课程的整体大纲下图是AI职场汇报智能办公文案写作效率提升教程中用到的ai工具。

「 虚幻私塾」 2364

Python常用模块总结_python 模块总结,2024年最新Python开发全套学习

datetime.datetime.strftime(datetime.datetime.now(), ‘%Y%m%d %H%M%S‘) 将datetime对象转换为str表示形式。urllib.quote_plus(string[,safe]) 与urllib.quote类似,但这个方法用‘+‘来替换‘ ‘,而quote用‘%20‘来代替‘ ‘datetime.date.today() 本地日期对象,(用str函数可得到它的字面表示(2014-03-24))

m0_61408947的博客 745

最全Python常用模块总结_python 模块总结(1),Python驱动工程师面试题

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

m0_63102527的博客 364

Python atexit模块

atexit模块介绍 作用:让注册的函数在解释器正常终止时自动执行,可以注册多个函数,所注册的函数会逆序执行(据查资料,造成逆序的原因为函数压栈造成的,先进后出) 1、正常注册 ,示例如下。 def goodbye(name, adjective): print("Goodbye %s, it was %s to meet you."% (name, adjective)) def he...

Python热爱者的博客 375

atexit函数的执行顺序_深入理解python中的atexit模块

atexit 模块介绍python atexit 模块定义了一个 register 函数,用于在 python 解释器中注册一个退出函数,这个函数在解释器正常终止时自动执行,一般用来做一些资源清理的操作。 atexit 按注册的相反顺序执行这些函数; 例如注册A、B、C,在解释器终止时按顺序C,B,A运行。Note:如果程序是非正常crash,或者通过os._exit()退出,...

weixin_39630048的博客 276
上一篇: Python模块学习 --- urllib
下一篇: C语言复杂声明
JGood
博客等级 码龄20年 498粉丝 65原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值