一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python中atexit模塊的基本使用示例

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

2020-07-20 10:45DarkBull Python

這篇文章主要介紹了Python中atexit模塊的基本使用示例,示例代碼基于Python2.x版本,注意其和Python3的兼容性,需要的朋友可以參考下

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

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

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

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 91制片厂制作果冻传媒八夷 | 波多野结衣xxxx性精品 | 精品国产一区二区三区在线观看 | 免费在线视频观看 | sss亚洲国产欧美一区二区 | 成人免费观看在线视频 | 婷婷精品进入 | 亚洲网色| 国产一区日韩二区欧美三区 | 久久精品国产欧美日韩99热 | 国产成人福利免费观看 | 日本五十路六十30人8时间 | 日本在线视频免费看 | 美女班主任下面好爽好湿好紧 | 国产亚洲女人久久久久久 | 胸大的姑娘中文字幕视频 | 国产a不卡片精品免费观看 国产aaa伦理片 | 日本不卡视频免费的 | 色综合视频一区二区观看 | 欧美猛男同志同性video | 国产日韩欧美在线一二三四 | 娇妻被朋友征服中文字幕 | 欧美同性猛男videos | 亚洲精品卡一卡2卡3卡4卡 | 日韩欧美综合在线二区三区 | 国产小视频在线 | 欧美性理论片在线观看片免费 | 猛操女人 | 无耻之徒第十一季在线观看 | 亚洲国产天堂在线观看 | 女张腿男人桶羞羞漫画 | 免费的强动漫人物的 | 91会员| 日韩欧美在线观看综合网另类 | 亚洲精品一区波多野结衣 | 欧美特级午夜一区二区三区 | 女人是男人的未来1分49分 | 4hc44四虎www在线影院男同 | 催眠 迷j系列小说 | 国产精品第四页 | 亚洲精品中文字幕在线 |