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

53 阅读3分钟

在上述代码中,我们定义了一个名为`cleanup`的函数,并通过`atexit.register`注册了它。现在,无论程序是正常结束,还是因为异常而终止,`cleanup`函数都会被调用,确保资源得到妥善的清理。


#### 2. 实际应用案例


假设我们的程序中创建了一些临时文件,或者开启了一些网络连接,我们希望在程序结束时删除这些文件,关闭这些连接。`atexit`模块就成了我们的得力助手:



import atexit import tempfile import shutil

temp_dir = tempfile.mkdtemp()

def cleanup(): shutil.rmtree(temp_dir) print(f"临时目录 {temp_dir} 已删除")

atexit.register(cleanup)


通过这种方式,我们确保了临时目录在程序结束时被删除,避免了可能的资源泄露。


#### 3. 注册多个清理函数


`atexit`模块允许我们注册多个清理函数。这些函数将按照与注册顺序相反的顺序执行。这为复杂的清理任务提供了可能:



import atexit

def cleanup1(): print("清理任务1")

def cleanup2(): print("清理任务2")

atexit.register(cleanup1) atexit.register(cleanup2)


输出将是:



清理任务2 清理任务1


#### 4. 注意事项


虽然`atexit`模块非常有用,但在使用时也需要注意一些事项:


* 避免在清理函数中引发异常,否则它可能会中断其他清理函数的执行。
* 如果程序是通过`os._exit()`函数终止的,`atexit`注册的清理函数将不会被执行。
* 在多线程环境中使用`atexit`时,清理函数将在主线程中执行,而不是在创建它的线程中执行。


文末有福利领取哦~
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

👉**一、Python所有方向的学习路线**

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。![img](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/8134b9f2479f4c6983aecf7bf330b868~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1772615114&x-signature=oU1JjIqb0eRWChniJ1qqcFpoAOA%3D)

👉**二、Python必备开发工具**

![img](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/1d436cc9f7934a76a6a9efa88df7e7c3~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1772615114&x-signature=KhV4lQdhwHrb9%2BwnD4wqnYKCu2w%3D)  
👉**三、Python视频合集**

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。  
![img](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/012fe66d7cdb42109c3b767f98b7a2bb~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1772615114&x-signature=5u8xMGRuMDHQfQI1Q0N06AeIt8M%3D)

👉 **四、实战案例**

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。**(文末领读者福利)**  
![img](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/95baf3f538c54ca299de38fc69385d85~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1772615114&x-signature=5qwoAbPdOb8bbq6GUJxPUflvALY%3D)

👉**五、Python练习题**

检查学习结果。  
![img](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/bbf759f14b914206afead8bd675ca65e~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1772615114&x-signature=5C5%2Bt%2FCo86ApF0bUHDfo1d87Mao%3D)

👉**六、面试资料**

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。  
![img](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/b2d3422e17f3410a850a8bc06cf0ddb7~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1772615114&x-signature=GDdkKpdv0EVNEtH1oUZf3NCFYew%3D)

![img](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/12cd61794bd94d578c6e652785d0fd6f~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1772615114&x-signature=OGn41zesKeMJNjFB7tj9Jrg%2FcKs%3D)

👉因篇幅有限,仅展示部分资料,这份完整版的Python全套学习资料已经上传



**了解详情:https://docs.qq.com/doc/DSnl3ZGlhT1RDaVhV**