學(xué)習(xí)python的朋友都知道文件讀寫的基本操作,通常我們讀寫文本的姿勢是這個樣子的:
f = open(file_name)
...
f.close()
每次定義一個文件讀寫對象绘闷,在操作完成后忆肾,我們都需要進(jìn)行關(guān)閉操作,如果你一不小心忘記了戏仓,恭喜你中獎了疚宇?你的程序很可能發(fā)生內(nèi)存泄露,然后內(nèi)存溢出赏殃,然后就掛了敷待。
這樣的事情發(fā)生的概率挺高的,我以前就總是這樣仁热,因為打開文本后,很可能一頓操作,代碼寫得很開心举哟,自然忘記風(fēng)險思劳,忘記f.close ...那么怎么避免類似的事情發(fā)生呢?這時候with就該出場了妨猩。
我們只需要:
with open(file_name) as f:
...
with作用的代碼塊執(zhí)行結(jié)束后潜叛,會自動進(jìn)行資源釋放,自動啊壶硅,媽媽再也不用擔(dān)心我的內(nèi)存D频肌!森瘪!
后來學(xué)了tensorflow 1.0 發(fā)現(xiàn)了with的妙用牡属,上下文管理,簡單來說扼睬,利用
with tf.name_scope(name, reuse=...):
balaba
我們可以把with下的所有變量都定義到name命名空間下逮栅,然后呢?后續(xù)可以重復(fù)使用窗宇。幫助我們實現(xiàn)網(wǎng)絡(luò)參數(shù)共享措伐。不過到了tensorflow2.0 這個功能不美麗了,你只要定義網(wǎng)絡(luò)layer類似于函數(shù)對象军俊,后續(xù)想要調(diào)用幾次就幾次侥加,參數(shù)都是共享的。
今天就分享到這粪躬,希望大家進(jìn)行文件讀寫時養(yǎng)成使用with的好習(xí)慣担败!
參考: