gpt4 book ai didi

python - 了解 gc.get_referrers

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

我正在尝试跟踪 Python (2.7) 中的内存泄漏。我找到了 gc.get_referrers,但不理解输出。删除 dying_node 后(除了我在搜索过程中创建的列表之外,应该删除所有引用),我的代码中有:

gc.collect()
print "done dying: ", getrefcount(dying_node) #note, includes the reference from getrefcount
referrers = gc.get_referrers(dying_node)
print "referrers: "
for referrer in referrers:
print referrer

产生输出:

> done dying:   4
> referrers:
> [<__main__.Node instance at 0x104e53cb0>, <__main__.Node instance at 0x104e53b90>, <__main__.Node instance at 0x104e53b00>, <__main__.Node instance at 0x104e53d40>, <__main__.Node instance at 0x104e53ab8>, <__main__.Node instance at 0x104e53bd8>, <__main__.Node instance at 0x104e53a70>, <__main__.Node instance at 0x104e53c20>, <__main__.Node instance at 0x104e53c68>, <__main__.Node instance at 0x104e53b48>]
> [<__main__.Node instance at 0x104e53c20>, <__main__.Node instance at 0x104e53ab8>, <__main__.Node instance at 0x104e53c68>, <__main__.Node instance at 0x104e53a70>, <__main__.Node instance at 0x104e53cb0>, <__main__.Node instance at 0x104e53b00>, <__main__.Node instance at 0x104e53d40>, <__main__.Node instance at 0x104e53b90>, <__main__.Node instance at 0x104e53b48>, <__main__.Node instance at 0x104e53bd8>]
> <frame object at 0x104516300>

我认为这意味着我有两个 Node 列表,它们引用此节点和一个框架对象。我假设框架对象是我正在查看的名称 dying_node。其中一个列表是我为帮助我打猎而创建的列表。但是有没有办法弄清楚另一个列表是什么?

最佳答案

好的,所以答案是

def namestr(obj, namespace):
return [name for name in namespace if namespace[name] is obj]

例子:

gc.collect() #make sure all garbage cleared before collecting referrers.
referrers = gc.get_referrers(object_of_interest)
for referrer in referrers:
print namestr(referrer, globals())

或者如果它是本地的:

    print namestr(referrer, locals())

这将打印类似 ['referrer', 'name_Im_interested_in'] 的内容。 'referrer' 是因为我刚刚将其命名。列表中的另一件事是我要查找的内容。

我从an answer here借来的.如果有人有更好的答案,请发布,我很乐意接受。

关于python - 了解 gc.get_referrers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28403750/

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