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()什么也不会做。

  • 相关阅读:
    B-Tree索引的学习记录
    mysql NOW,CURRENT_TIMESTAMP,SYSDATE 之间的区别
    哈希索引
    MyISAM和InnoDB的区别
    负载均衡记录一
    哈希索引
    mysql ZEROFILL属性
    redis常用命令及使用场景
    js Function()构造函数
    书写闭包的时候需注意一下情况
  • 原文地址:https://www.cnblogs.com/wanghuixi/p/11254304.html
Copyright © 2011-2022 走看看