gpt4 book ai didi

python - 它有内存泄漏吗?

转载 作者:行者123 更新时间:2023-11-28 21:27:06 25 4
gpt4 key购买 nike

我读了objgraph最近的文档,我对以下代码感到困惑

>>> class MyBigFatObject(object):
... pass
...
>>> def computate_something(_cache={}):
... _cache[42] = dict(foo=MyBigFatObject(),
... bar=MyBigFatObject())
... # a very explicit and easy-to-find "leak" but oh well
... x = MyBigFatObject() # this one doesn't leak

它表明“一个非常明确且易于查找的‘漏洞’”。这有内存泄漏吗?是字典_cache吗?

最佳答案

_cache 是一个带有可变默认值的关键字参数,它确实在函数体中发生了变化。这会将 MyBigFatObjects 实例永久存储在该可变关键字参数中。

这与其说是泄漏,还不如说是对可变关键字参数生命周期的误解。该函数本身仍然可以调用 del _cache[42] 来删除这些对象。

参见 "Least Astonishment" and the Mutable Default Argument有关该主题的更多信息。

关于python - 它有内存泄漏吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11684516/

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