简单介绍:
此模块儿常用来注册回调函数(sys.exitfunc只能注册一个回调函数),而且不支持参数,而atexit是基于sys.exitfunc来实现,把回调函数放到列表中,当程序退出时,按照先后顺序调用注册的回调函数,如果回调函数执行过程中异常,会打印异常信息并继续执行下一个回调函数,直到所有的回调执行完毕,重新抛出上面的异常信息
常用方法:
atexit.register(func, *targs, **kargs)
说明: 注册退出时的回调函数,不可和sys.exitfunc混合使用,可以同时注册多个退出回调函数(其实也可以用装饰器注册回调函数)
# -*- coding: utf-8 -*-
"""
#
# Authors: limanman
# OsChina: http://my.oschina.net/pydevops/
# Purpose:
#
"""
import atexit
def exit_index0(*args, **kwargs):
"""exit_0 function."""
print 'exit_0'
for arg in args:
print ' '*4, arg
def exit_index1():
"""exit_1 function."""
print 'exit_1'
raise Exception, 'exit_1'
def exit_index2(*args, **kwargs):
"""exit_2 function."""
print 'exit_2'
for key in kwargs:
print ' '*4, key, kwargs[key]
def main():
"""Main function."""
atexit.register(exit_index0, *[0, 0, 0])
atexit.register(exit_index1)
atexit.register(exit_index2, **{'0': 1, '1': 1, '2': 1})
if __name__ == '__main__':
main()