zoukankan      html  css  js  c++  java
  • python之atexit模块的使用

    python atexit 模块定义了一个 register 函数,用于在 python 解释器中注册一个退出函数,这个函数在解释器正常终止时自动执行,一般用来做一些资源清理的操作。 atexit 按注册的相反顺序执行这些函数; 例如注册A、B、C,在解释器终止时按顺序C,B,A运行。

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

    通过装饰器的方式:
    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    # @Time   : 2019/07/22 23:57
    # @Author : wang huixi
    # @File   : update.py
    import  os
    from atexit import register
    
    def main():
        print('Do something.')
    @register
    def _atexit():
        print('Done.')
    if __name__ == '__main__':
        main()
    非装饰器的方式:
    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    # @Time   : 2019/07/22 23:57
    # @Author : wang huixi
    # @File   : update.py
    import  os
    from atexit import register
    def main():
        print('main')
    
    def goodbye(name, adjective):
        print('Goodbye, %s, it was %s to meet you.' % (name, adjective))
    
    
    # register(goodbye, 'Donny', 'nice')
    # or:
    # register(goodbye, adjective='nice', name='Donny')
    if __name__ == '__main__':
        register(goodbye, adjective='nice', name='Donny')
        main()
        exit(1) #程序退出了
        print "chegn xu"

    删除退出函数(一般用不到)
    atexit.unregister(func)

    从解释器关闭时运行的函数列表中删除func。 调用unregister()后,当解释器关闭时,即使它被注册了多次,func也不会被调用。如果func没有注册过的话,则unregister()什么也不会做。

  • 相关阅读:
    mybatis(2)操作数据库
    《构建之法》阅读笔记02
    mybatis(4)使用注解方式配置sql语句
    mybatis(5)参数传递
    Android Studio安装
    《构建之法》阅读笔记01
    反射
    mybatis(3)利用Mapper接口实现数据的增删改查
    activity组件
    mybatis(1)
  • 原文地址:https://www.cnblogs.com/wanghuixi/p/11254304.html
Copyright © 2011-2022 走看看