我有一个长时间运行的进程,可能会有资源泄漏。如何在我的环境中获取所有实例化对象(可能只有特定类)的列表?
答案 0 :(得分:7)
>>> import gc
>>>
>>> class Foo: pass
...
>>> f1 = Foo()
>>>
>>> [o for o in gc.get_objects() if isinstance(o, Foo)]
[<__main__.Foo instance at 0x2d2288>]
>>>
>>> f2 = Foo()
>>>
>>> [o for o in gc.get_objects() if isinstance(o, Foo)]
[<__main__.Foo instance at 0x2d2288>, <__main__.Foo instance at 0x2d22b0>]
答案 1 :(得分:3)
答案 2 :(得分:-1)
所有实例化对象(我假设只在单个模块中使用Python本身):
globals().keys()
。
对于所有这些只是特定类的实例:
filter(lambda x: isinstance(x, some_class), globals().keys())
。