最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

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

下面是一個(gè)例子,展示了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

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

201578113956933.jpg (513×365)

相關(guān)文章

  • 這3個(gè)Python實(shí)時(shí)可視化工具包來(lái)幫你了解性能瓶頸

    這3個(gè)Python實(shí)時(shí)可視化工具包來(lái)幫你了解性能瓶頸

    由于Python的動(dòng)態(tài)性和多功能性,它比其他語(yǔ)言的速度要慢.有時(shí)復(fù)雜的計(jì)算或算法需要大量時(shí)間才能在Python中執(zhí)行.因此需要跟蹤代碼的執(zhí)行流,深入了解性能瓶頸,需要的朋友可以參考下
    2021-06-06
  • Pytest+request+Allure實(shí)現(xiàn)接口自動(dòng)化框架

    Pytest+request+Allure實(shí)現(xiàn)接口自動(dòng)化框架

    接口自動(dòng)化是指模擬程序接口層面的自動(dòng)化,由于接口不易變更,維護(hù)成本更小,所以深受各大公司的喜愛(ài),本文主要介紹了Pytest+request+Allure實(shí)現(xiàn)接口自動(dòng)化框架,感興趣的可以了解一下
    2021-07-07
  • python模擬鼠標(biāo)點(diǎn)擊和鍵盤輸入的操作

    python模擬鼠標(biāo)點(diǎn)擊和鍵盤輸入的操作

    這篇文章主要介紹了python模擬鼠標(biāo)點(diǎn)擊和鍵盤輸入的操作,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Appium Python自動(dòng)化測(cè)試之環(huán)境搭建的步驟

    Appium Python自動(dòng)化測(cè)試之環(huán)境搭建的步驟

    這篇文章主要介紹了Appium Python自動(dòng)化測(cè)試之環(huán)境搭建的步驟,以32位的Windows 7操作系統(tǒng)為例介紹Appium+Python的環(huán)境搭建步驟,感興趣的小伙伴們可以參考一下
    2019-01-01
  • Pycharm中import torch報(bào)錯(cuò)的快速解決方法

    Pycharm中import torch報(bào)錯(cuò)的快速解決方法

    這篇文章主要介紹了Pycharm中import torch報(bào)錯(cuò)的快速解決方法,很多朋友容易碰到這個(gè)問(wèn)題,今天小編特此把解決方案分享到腳本之家平臺(tái)供大家參考,需要的朋友可以參考下
    2020-03-03
  • Django中的forms組件實(shí)例詳解

    Django中的forms組件實(shí)例詳解

    這篇文章主要介紹了Django的forms組件,本文通過(guò)實(shí)例代碼介紹了Django的forms組件,需要的朋友可以參考下
    2018-11-11
  • Django框架安裝及項(xiàng)目創(chuàng)建過(guò)程解析

    Django框架安裝及項(xiàng)目創(chuàng)建過(guò)程解析

    這篇文章主要介紹了Django框架安裝及項(xiàng)目創(chuàng)建過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Python進(jìn)程池基本概念

    Python進(jìn)程池基本概念

    這篇文章主要介紹了Python進(jìn)程池基本概念,當(dāng)創(chuàng)建的子進(jìn)程數(shù)量不多時(shí),可以直接利用多處理進(jìn)程中的進(jìn)程動(dòng)態(tài)形成需要的進(jìn)程,下文關(guān)于Python線程池的概念做詳細(xì)介紹,需要的小伙伴可以參考一下
    2022-03-03
  • Pycharm及python安裝詳細(xì)步驟及PyCharm配置整理(推薦)

    Pycharm及python安裝詳細(xì)步驟及PyCharm配置整理(推薦)

    這篇文章主要介紹了Pycharm及python安裝詳細(xì)步驟以及PyCharm配置整理,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • django多種支付、并發(fā)訂單處理實(shí)例代碼

    django多種支付、并發(fā)訂單處理實(shí)例代碼

    在本篇文章里小編給大家整理的是關(guān)于django多種支付、并發(fā)訂單處理實(shí)例代碼,需要的朋友們可以學(xué)習(xí)下。
    2019-12-12

最新評(píng)論

金塔县| 冕宁县| 昂仁县| 新宾| 家居| 株洲县| 乐清市| 永安市| 汨罗市| 广宗县| 阜城县| 吉安县| 万山特区| 莲花县| 达孜县| 齐河县| 青浦区| 曲水县| 德保县| 五常市| 兴海县| 农安县| 新田县| 十堰市| 海南省| 噶尔县| 永春县| 息烽县| 都安| 临夏市| 山阴县| 师宗县| 浮山县| 永城市| 莱州市| 南部县| 祁连县| 海伦市| 徐州市| 东乡县| 明溪县|