简介:
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 函数没有显式关闭文件句柄。
好像这个库使用自动清理功能还可以的样子