python3退出装饰器

简介:

Python3 中的 atexit 模块提供了一种在程序退出时自动执行函数的机制。这可以通过使用 @atexit.register 装饰器注册退出处理程序来实现。

例子1


import atexit


@atexit.register
def exit_handler() -> None:
  print("程序已退出!")


def main() -> None:
  print("程序正在运行...")


if __name__ == "__main__":
  main()
程序正在运行...
程序已退出!

例子2记录程序运行时间

import atexit
import time


def exit_handler() -> None:
  start_time = time.time()
  end_time = time.time()
  print(f"程序运行时间:{end_time - start_time:.9f} 秒!")


def main() -> None:
  start_time = time.time()
  # 执行一些耗时操作
  end_time = time.time()
  print(f"程序运行时间:{end_time - start_time:.9f} 秒")


if __name__ == "__main__":
  atexit.register(exit_handler)
  main()

程序运行时间:0.000000477 秒
程序运行时间:0.000000238 秒!

例子3 关闭文件句柄

import atexit
import os


def exit_handler() -> None:
  if file_handle:
    file_handle.close()


def main() -> None:
  global file_handle
  file_handle = open("my_file.txt", "w")
  # 写入一些数据到文件
  

if __name__ == "__main__":
  atexit.register(exit_handler)
  file_handle = None
  main()

解释:

exit_handler 函数关闭 file_handle 文件句柄,以确保在程序退出时释放资源。
main 函数打开一个文件并写入一些数据。
由于 atexit.register 装饰器,exit_handler 函数会在程序正常退出或遇到异常时自动执行,即使 main 函数没有显式关闭文件句柄。

好像这个库使用自动清理功能还可以的样子

  • 13
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

少陽君

谢谢老板的拿铁

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值