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

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

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

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

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

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

如果使用的python版本是2.6,還可以用裝飾器的語法來注冊回調函數。

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

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

201578113956933.jpg (513×365)

相關文章

  • 這3個Python實時可視化工具包來幫你了解性能瓶頸

    這3個Python實時可視化工具包來幫你了解性能瓶頸

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

    Pytest+request+Allure實現接口自動化框架

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

    python模擬鼠標點擊和鍵盤輸入的操作

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

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

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

    Pycharm中import torch報錯的快速解決方法

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

    Django中的forms組件實例詳解

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

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

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

    Python進程池基本概念

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

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

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

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

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

最新評論

屏边| 新泰市| 塔城市| 徐汇区| 石渠县| 德清县| 阜南县| 淄博市| 綦江县| 万载县| 金门县| 略阳县| 绥阳县| 东方市| 阜新| 鄱阳县| 临颍县| 朔州市| 凭祥市| 乌兰浩特市| 滦南县| 汤阴县| 阳新县| 遵化市| 紫金县| 湾仔区| 伊通| 棋牌| 吴堡县| 虞城县| 涡阳县| 绥化市| 四子王旗| 靖江市| 鱼台县| 通化市| 峡江县| 安庆市| 安平县| 辽中县| 介休市|