深入理解python中的atexit模塊
atexit 模塊介紹
python atexit 模塊定義了一個 register 函數,用于在 python 解釋器中注冊一個退出函數,這個函數在解釋器正常終止時自動執(zhí)行,一般用來做一些資源清理的操作。 atexit 按注冊的相反順序執(zhí)行這些函數; 例如注冊A、B、C,在解釋器終止時按順序C,B,A運行。
Note:如果程序是非正常crash,或者通過os._exit()退出,注冊的退出函數將不會被調用。
官方文檔:https://docs.python.org/3.5/library/atexit.html
注冊 退出函數
atexit.register(func, *args, **kargs)
將func作為要在終止時執(zhí)行的函數。任何要傳遞給func的可選參數必須作為參數傳遞給register() ??梢远啻巫韵嗤暮瘮岛蛥?。
當程序退出的時候,按先進后出的順序調用注冊的函數。如果退出函數在執(zhí)行過程中拋出了異常,atexit會打印異常的信息,并繼續(xù)執(zhí)行下一下回調,直到所有退出函數執(zhí)行完畢,它會重新拋出最后接收到的異常。
示例
通過裝飾器的方式:
#!/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()什么也不會做。
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關文章
Python驅動ansys執(zhí)行apdl文件的代碼示例
在Python中驅動ANSYS執(zhí)行APDL(ANSYS Parametric Design Language)文件,可以通過使用subprocess模塊來調用ANSYS的可執(zhí)行文件,并傳遞APDL文件作為參數,本文給大家介紹了一個詳細的代碼示例,需要的朋友可以參考下2024-11-11
Python代碼一鍵轉Jar包及Java調用Python新姿勢
這篇文章主要介紹了Python一鍵轉Jar包,Java調用Python新姿勢,本文通過截圖實例給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-03-03
對python xlrd讀取datetime類型數據的方法詳解
今天小編就為大家分享一篇對python xlrd讀取datetime類型數據的方法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12

