atexit模塊介紹

atexit 模塊介紹html

python atexit 模塊定義了一個 register 函數,用於在 python 解釋器中註冊一個退出函數,這個函數在解釋器正常終止時自動執行,通常用來作一些資源清理的操做。 atexit 按註冊的相反順序執行這些函數; 例如註冊A、B、C,在解釋器終止時按順序C,B,A運行。python

Note:若是程序是非正常crash,或者經過os._exit()退出,註冊的退出函數將不會被調用。函數

官方文檔:https://docs.python.org/3.5/library/atexit.htmlspa

註冊 退出函數 .net

atexit.register(func, *args, **kargs)
 

將func做爲要在終止時執行的函數。任何要傳遞給func的可選參數必須做爲參數傳遞給register() 。能夠屢次註冊相同的函數和參數。code

當程序退出的時候,按先進後出的順序調用註冊的函數。若是退出函數在執行過程當中拋出了異常,atexit會打印異常的信息,並繼續執行下一下回調,直到全部退出函數執行完畢,它會從新拋出最後接收到的異常。htm

示例blog

------經過裝飾器方式資源

#!/usr/bin/env python
from atexit import register
def main():
 print('Do something.')
@register
def _atexit():
 print('Done.')
if __name__ == '__main__':
 main()

----非裝飾器(原始用法)文檔

#!/usr/bin/env python
from atexit import register
def main():
 #pass
 print('XX')
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__':
 main()

刪除退出函數[通常用不到]atexit.unregister(func)

從解釋器關閉時運行的函數列表中刪除func。 調用unregister()後,當解釋器關閉時,即便它被註冊了屢次,func也不會被調用。若是func沒有註冊過的話,則unregister()什麼也不會作。

參考腳本之家:https://www.jb51.net/article/107630.htm

相關文章
相關標籤/搜索