欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python中atexit模塊的基本使用示例

 更新時間:2015年07月08日 11:41:08   作者:DarkBull  
這篇文章主要介紹了Python中atexit模塊的基本使用示例,示例代碼基于Python2.x版本,注意其和Python3的兼容性,需要的朋友可以參考下

atexit模塊很簡單,只定義了一個register函數(shù)用于注冊程序退出時的回調(diào)函數(shù),我們可以在這個回調(diào)函數(shù)中做一些資源清理的操作。

注:如果程序是非正常crash,或者通過os._exit()退出,注冊的回調(diào)函數(shù)將不會被調(diào)用。

我們也可以通過sys.exitfunc來注冊回調(diào),但通過它只能注冊一個回調(diào),而且還不支持參數(shù)。所以建議大家使用atexit來注冊回調(diào)函數(shù)。但千萬不要在程序中同時使用這兩種方式,否則通過atexit注冊的回調(diào)可能不會被正常調(diào)用。其實通過查閱atexit的源碼,你會發(fā)現(xiàn)原來它內(nèi)部是通過sys.exitfunc來實現(xiàn)的,它先把注冊的回調(diào)函數(shù)放到一個列表中,當程序退出的時候,按先進后出的順序調(diào)用注冊的回調(diào)。如果回調(diào)函數(shù)在執(zhí)行過程中拋出了異常,atexit會打印異常的文字信息,并繼續(xù)執(zhí)行下一下回調(diào),直到所有的回調(diào)都執(zhí)行完畢,它會重新拋出最后接收到的異常。

如果使用的python版本是2.6,還可以用裝飾器的語法來注冊回調(diào)函數(shù)。

下面是一個例子,展示了atexit模塊的使用:
 

import atexit
 
def exit0(*args, **kwarg):
  print 'exit0'
  for arg in args:
    print ' ' * 4, arg
 
  for item in kwarg.items():
    print ' ' * 4, item
 
def exit1():
  print 'exit1'
  raise Exception, 'exit1'
 
def exit2():
  print 'exit2'  
 
atexit.register(exit0, *[1, 2, 3], **{ "a": 1, "b": 2, })
atexit.register(exit1)
atexit.register(exit2)
 
@atexit.register
def exit3():
  print 'exit3'
 
if __name__ == '__main__':
  pass

下面是程序運行的結(jié)果,可以看到回調(diào)函數(shù)執(zhí)行的順序與它們被注冊的順序剛才相反。

201578113956933.jpg (513×365)

相關(guān)文章

  • 深入解析Python中的WSGI接口

    深入解析Python中的WSGI接口

    這篇文章主要介紹了深入解析Python中的WSGI接口,WSGI接口是Python中網(wǎng)絡(luò)框架連接服務(wù)器的必備工具,需要的朋友可以參考下
    2015-05-05
  • python開發(fā)實例之Python的Twisted框架中Deferred對象的詳細用法與實例

    python開發(fā)實例之Python的Twisted框架中Deferred對象的詳細用法與實例

    這篇文章主要介紹了python開發(fā)實例之Python的Twisted框架中Deferred對象的詳細用法與實例,需要的朋友可以參考下
    2020-03-03
  • Python的內(nèi)建模塊itertools的使用解析

    Python的內(nèi)建模塊itertools的使用解析

    這篇文章主要介紹了Python的內(nèi)建模塊itertools的使用解析,itertools是python的迭代器模塊,itertools提供的工具相當高效且節(jié)省內(nèi)存,Python的內(nèi)建模塊itertools提供了非常有用的用于操作迭代對象的函數(shù),需要的朋友可以參考下
    2023-09-09
  • 對Python 簡單串口收發(fā)GUI界面的實例詳解

    對Python 簡單串口收發(fā)GUI界面的實例詳解

    今天小編就為大家分享一篇對Python 簡單串口收發(fā)GUI界面的實例詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • 使用python os模塊復制文件到指定文件夾的方法

    使用python os模塊復制文件到指定文件夾的方法

    今天小編就為大家分享一篇使用python os模塊復制文件到指定文件夾的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • 詳解如何利用Python拍攝延時攝影

    詳解如何利用Python拍攝延時攝影

    隨著游戲引擎技術(shù)的快速發(fā)展,游戲畫面越來越精美,很多玩家希望拍攝這些精美游戲中的畫面。本文將講解如何利用Python實現(xiàn)延時攝影的拍攝,需要的可以參考一下
    2022-03-03
  • pandas.concat實現(xiàn)DataFrame豎著拼接、橫著拼接方式

    pandas.concat實現(xiàn)DataFrame豎著拼接、橫著拼接方式

    這篇文章主要介紹了pandas.concat實現(xiàn)DataFrame豎著拼接、橫著拼接方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • Python實現(xiàn)的Kmeans++算法實例

    Python實現(xiàn)的Kmeans++算法實例

    這篇文章主要介紹了Kmeans和kmeans++算法,講解了Kmeans算法的缺點和kmeans++算法的實現(xiàn)思路,以及Python和matlab中實現(xiàn)的Kmeans++算法,需要的朋友可以參考下
    2014-04-04
  • python實現(xiàn)簡單圖書管理系統(tǒng)

    python實現(xiàn)簡單圖書管理系統(tǒng)

    這篇文章主要為大家詳細介紹了python實現(xiàn)簡單圖書管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • Python 的lru_cache裝飾器使用簡介

    Python 的lru_cache裝飾器使用簡介

    這篇文章主要介紹了Python 的lru_cache 裝飾器使用簡介,幫助大家更好的理解和學習使用python,感興趣的朋友可以了解下
    2021-03-03

最新評論