python weakref

weakref庫允許pythoner創(chuàng)對象的弱引用。

一個對象的弱引用并不足以使得對象存在酒繁。當一個對象僅僅剩下弱引用的時候,python的垃圾回收機制會回收銷毀這些對象,收回內(nèi)存艳汽。

弱引用的一個主要用途就是來實現(xiàn)緩存或者大對象的映射。就是當其他地方?jīng)]有對這些大文件的引用的時候对雪,這個對象會被銷毀河狐。

例如,你有很多比較大的圖像瑟捣,你希望每個都有一個名字相關聯(lián)馋艺。如果你用python中的dict類型的對象來完成名字到圖像對象的映射,這些對象會一直存在著迈套,因為其存在于字典中(有非弱引用引用這個對象)捐祠。weakref中的WeakKeyDictionary和WeakValueDictionary可以用來解決這個問題(也就是說這些大對象可以作為鍵或者值)。當僅有弱引用指向這些對象的時候桑李,這些對象會被銷毀踱蛀,并且WeakKeyDictionary和WeakValueDictionary中對應的映射也會被刪除。

其中常用的方法如下

weakref.ref(object[, callback]):返回一個對象的弱引用贵白,調(diào)用返回對象(也就是r())率拒,會返回一個該弱引用指向的對象。

weakref.proxy(object[, callback]):獲取對象的代理禁荒,這個代理相當于原對象猬膨,也相當于一個弱引用。

weakref.getweakrefcount(object):返回對象的弱引用個數(shù)

weakref.getweakrefs(object):以列表的方式返回對象的所有弱引用

weakref.WeakKeyDictionary([dict]):鍵作為弱引用

weakref.WeakValueDictionary([dict]):值作為弱引用

weakref.WeakSet([elements]):弱引用的集合

關于類中定義的weakref

weakref is just an opaque object that references all the weak references to the current object. In actual fact it's an instance of weakref (or sometimes weakproxy) which is both a weak reference to the object and part of a doubly linked list to all weak references for that object.

It's just an implementation detail that allows the garbage collector to inform weak references that it's referent has been collected, and to not allow access to it's underlying pointer any more.

The weak reference can't rely on checking the reference count of the object it refers to. This is because that memory may have been reclaimed and now being used by another object. Best case scenario the VM will crash, worst case the weak reference will allow access to an object it wasn't originally referring to. This is why the garbage collector must inform the weak reference it's referent is no longer valid.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末呛伴,一起剝皮案震驚了整個濱河市勃痴,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌磷蜀,老刑警劉巖召耘,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異褐隆,居然都是意外死亡污它,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來衫贬,“玉大人德澈,你說我怎么就攤上這事」坦撸” “怎么了梆造?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長葬毫。 經(jīng)常有香客問我镇辉,道長,這世上最難降的妖魔是什么贴捡? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任忽肛,我火速辦了婚禮,結(jié)果婚禮上烂斋,老公的妹妹穿的比我還像新娘屹逛。我一直安慰自己,他們只是感情好汛骂,可當我...
    茶點故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布罕模。 她就那樣靜靜地躺著,像睡著了一般帘瞭。 火紅的嫁衣襯著肌膚如雪淑掌。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天图张,我揣著相機與錄音锋拖,去河邊找鬼诈悍。 笑死祸轮,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的侥钳。 我是一名探鬼主播适袜,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼舷夺!你這毒婦竟也來了苦酱?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤给猾,失蹤者是張志新(化名)和其女友劉穎疫萤,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體敢伸,經(jīng)...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡扯饶,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片尾序。...
    茶點故事閱讀 40,144評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡钓丰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出每币,到底是詐尸還是另有隱情携丁,我是刑警寧澤,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布兰怠,位于F島的核電站梦鉴,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏揭保。R本人自食惡果不足惜尚揣,卻給世界環(huán)境...
    茶點故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望掖举。 院中可真熱鬧快骗,春花似錦、人聲如沸塔次。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽励负。三九已至藕溅,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間继榆,已是汗流浹背巾表。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留略吨,地道東北人集币。 一個月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像翠忠,于是被迫代替她去往敵國和親鞠苟。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,092評論 2 355

推薦閱讀更多精彩內(nèi)容

  • **2014真題Directions:Read the following text. Choose the be...
    又是夜半驚坐起閱讀 9,515評論 0 23
  • Lua 5.1 參考手冊 by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 13,813評論 0 38
  • 投入地笑一次秽之,忘了自己 投入地愛一次当娱,忘了自己 伸出你的手別有顧慮, 敞開你的心別再猶豫 投入藍天你就是白云考榨, 投...
    戀戀FP閱讀 132評論 0 0
  • 今天下午修一個寶馬過來的時候發(fā)動機吹口哨聲音跨细,檢查故障碼報vvt電機的最后全部刪除以后電機學習一下全部正常又好了 ...
    AAAAA京心達張水尚閱讀 186評論 0 0
  • 活到這把年紀朋友也不少,在潛意識里朋友已經(jīng)被我分類了河质,下面是分類詳情冀惭,大家可以看看是否有不妥的地方申鱼。 我愿意和別人...
    嵐西兒閱讀 333評論 0 2