用python写一些api测试, 需要在程序结束前记录时间, 尝试了各种中文的英文的关键词, 终于搜索到atexit这个模块.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import atexit
def exit_function():
print("exiting")
def exit_function2(name, age):
print("exiting2: " + name + " " + str(age))
@atexit.register
def exit_function3():
print("exiting3")
if __name__ == '__main__':
atexit.register(exit_function)
atexit.register(exit_function2, 'Phoenix', 22)

可注册多个回调函数, 也可以传入参数, 也可以使用装饰器来修饰需要回调的函数, 执行顺序是先进后出, 代码由上至下, 所以注册顺序是exit_function3, exit_function, exit_function2, 所以执行顺序反过来:

1
2
3
exiting2: 22Phoenix
exiting
exiting3

注意: 如果程序是非正常crash,或通过os._exit()退出,注册的回调函数将不会被调用.