gpt4 book ai didi

python - Python 中可以存在 "soft references"吗?

转载 作者:太空狗 更新时间:2023-10-29 20:26:19 26 4
gpt4 key购买 nike

在其他语言(例如 Java)中,对象引用可以是 Strong、Weak、Soft 或 Phantom (http://weblogs.java.net/blog/enicholas/archive/2006/05/understanding_w.html)。

在 Python 中,引用默认是强引用,而 WeakRef 模块允许弱引用。

是否可以在 Python 中使用“软引用”?

在我的特殊情况下,我有一个创建起来很耗时的对象缓存。有时可能没有对缓存对象的引用,但如果不需要(即如果内存充足),我不想丢弃缓存对象。

最佳答案

除了 hard(又名 strong)和 weak 之外,Python 本身不提供任何类型的引用。

也就是说,here是我大约一年前提出的一个 softref 实现,我一直在几个我需要的地方使用它。它提供的不是完全实际的软引用,但对于大多数用例来说它很接近。它的边缘有点粗糙,但功能齐全......虽然它依赖于内部的一些引用计数,这意味着它可能会在除 CPython 之外的任何东西上中断。

特别是,我专门为创建长生命周期对象的缓存而编写它...SoftValueDictionary 应该正是您要找的东西。

关于python - Python 中可以存在 "soft references"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7331389/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com