深入理解python中的atexit模塊
atexit 模塊介紹
python atexit 模塊定義了一個 register 函數(shù),用于在 python 解釋器中注冊一個退出函數(shù),這個函數(shù)在解釋器正常終止時自動執(zhí)行,一般用來做一些資源清理的操作。 atexit 按注冊的相反順序執(zhí)行這些函數(shù); 例如注冊A、B、C,在解釋器終止時按順序C,B,A運(yùn)行。
Note:如果程序是非正常crash,或者通過os._exit()
退出,注冊的退出函數(shù)將不會被調(diào)用。
官方文檔:https://docs.python.org/3.5/library/atexit.html
注冊 退出函數(shù)
atexit.register(func, *args, **kargs)
將func作為要在終止時執(zhí)行的函數(shù)。任何要傳遞給func的可選參數(shù)必須作為參數(shù)傳遞給register()
??梢远啻巫韵嗤暮瘮?shù)和參數(shù)。
當(dāng)程序退出的時候,按先進(jìn)后出的順序調(diào)用注冊的函數(shù)。如果退出函數(shù)在執(zhí)行過程中拋出了異常,atexit會打印異常的信息,并繼續(xù)執(zhí)行下一下回調(diào),直到所有退出函數(shù)執(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()
刪除退出函數(shù)[一般用不到]
> atexit.unregister(func) >
從解釋器關(guān)閉時運(yùn)行的函數(shù)列表中刪除func。 調(diào)用unregister()
后,當(dāng)解釋器關(guān)閉時,即使它被注冊了多次,func也不會被調(diào)用。如果func沒有注冊過的話,則unregister()
什么也不會做。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關(guān)文章
python中openpyxl和xlsxwriter對Excel的操作方法
這篇文章主要介紹了python中openpyxl和xlsxwriter對Excel的操作方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03Python采集某評論區(qū)內(nèi)容的實(shí)現(xiàn)示例
本文主要介紹了Python采集某評論區(qū)內(nèi)容的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04通過python實(shí)現(xiàn)Google的精準(zhǔn)搜索功能
這篇文章主要介紹了通過python實(shí)現(xiàn)Google的精準(zhǔn)搜索功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2024-05-05python自帶緩存lru_cache用法及擴(kuò)展的使用
本篇博客將結(jié)合python官方文檔和源碼詳細(xì)講述lru_cache緩存方法是怎么實(shí)現(xiàn),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-08-08Python導(dǎo)入父文件夾中模塊并讀取當(dāng)前文件夾內(nèi)的資源
這篇文章主要給大家介紹了關(guān)于Python導(dǎo)入父文件夾中模塊并讀取當(dāng)前文件夾內(nèi)資源的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11用Pycharm實(shí)現(xiàn)鼠標(biāo)滾輪控制字體大小的方法
今天小編就為大家分享一篇用Pycharm實(shí)現(xiàn)鼠標(biāo)滾輪控制字體大小的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01獨(dú)立進(jìn)程使用django模型及django.setup()使用
這篇文章主要介紹了獨(dú)立進(jìn)程使用django模型(django.setup()使用),它提供了一種簡單且高效的方式來利用Django強(qiáng)大的功能,并使你的代碼更易于維護(hù)和擴(kuò)展,需要的朋友可以參考下2023-07-07