afa*_*dge 9 python reference soft-references
在其他语言(例如Java)中,对象引用可以是Strong,Weak,Soft或Phantom(http://weblogs.java.net/blog/enicholas/archive/2006/05/understanding_w.html).
在Python中,默认情况下引用为Strong,而WeakRef模块允许弱引用.
是否可以在Python中使用"软引用"?
在我的特定情况下,我有一个对象的缓存,这些对象的创建非常耗时.有时可能没有对缓存对象的引用,但是如果我不需要(例如,如果内存很多),我不想抛弃缓存的对象.
除了硬(又强)和弱之外,Python本身并不提供任何类型的引用.
也就是说,这是我在大约一年前掀起的一个softref实现,我在一些我需要的地方使用过.它提供的内容并不是真正的软引用,但它在大多数用例中都很接近.它的边缘有点粗糙,但功能齐全......虽然它依赖于内部的一些引用计数,这意味着除了CPython之外它可能会破坏任何东西.
特别是,我写的正是为了创建昂贵的长寿命对象的缓存......这SoftValueDictionary应该是你正在寻找的.