弱引用 weakref

弱引用 weakref

對對象的弱引用不能保證對象存活:當對像的引用只剩弱引用時, garbage collection 可以銷燬引用並將其內存重用於其他內容。但是,在實際銷燬對象之前,即使沒有強引用,弱引用也一直能返回該對象。

弱引用的主要用途是實現保存大對象的高速緩存或映射,但又並希望大對象僅僅因爲它出現在高速緩存或映射中而保持存活。

例如,如果您有許多大型二進制圖像對象,則可能希望將名稱與每個對象關聯起來。如果您使用Python字典將名稱映射到圖像,或將圖像映射到名稱,則圖像對象將保持活動狀態,因爲它們在字典中顯示爲值或鍵。 weakref 模塊提供的 WeakKeyDictionaryWeakValueDictionary 類可以替代Python字典,使用弱引用來構造映射,這些映射不會僅僅因爲它們出現在映射對象中而使對象保持存活。例如,如果一個圖像對象是 WeakValueDictionary 中的值,那麼當對該圖像對象的剩餘引用是弱映射對象所持有的弱引用時,垃圾回收可以回收該對象並將其在弱映射對象中相應的條目刪除。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章