发现泄漏的物体



我有一个很大的python代码库。

有一次,我发现(使用guppy,但这并不重要(我有一个类BigClass的现有实例。

在代码的这一点上,我不希望有任何BigClass的活动实例,因为它们都应该发布。我试着呼叫gc.collect()

我如何追踪这个实例在哪里,为什么它还活着,它的属性等等?

您可以找到该类的所有实例:

for obj in gc.get_objects():
if isinstance(obj, BigClass):
# DEBUG IT

用于调试实际对象以及如何引用它们:

for ref in gc.get_referrers(obj):
# Should probably filter here to reduce the amount of data printed and avoid printing locals() as well
print(ref)

最新更新