Python - 在内存中查找当前对象

标签 python python-3.x memory

有没有办法找到当前在内存中的对象,包括它们的名称、它们的位置和模块名称等?
我的进程 Python.exe 在任务管理器中的 main() 方法之前的内存占用为 15MB。
在 main 方法完成第一次迭代后,进程 Python.exe 内存大小为 250MB。
我想了解哪些对象仍在内存中,以便我可以删除它们

while True:
 # print current object details
 main() 
 # print current object details

最佳答案

不,没有办法在 Python 中找到所有对象。此外,大多数对象没有名称,并且对象“位置”不像您认为的那样工作。
与您正在寻找的最接近的是 gc.get_objects ,它返回所有 GC 跟踪对象的列表。这不是所有对象的列表,也没有告诉您为什么对象仍然存在。您可以使用 gc.get_referrers 获取对象的 GC 跟踪的引荐来源网址,但并非所有引用都为 GC 所知。
即使您确保不再需要的对象无法访问,并且即使它们的内存被回收,这仍然不意味着 Python 会真正将内存返回给操作系统。在这一切结束时,您的内存使用量可能仍为 250 MB。

关于Python - 在内存中查找当前对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62686644/

相关文章:

python - Modbus错误: [Invalid Message] Incomplete message received,至少应为2个字节(已收到0个)

Python:从数据框中删除字典中不存在值的行

python - QML + PyQt5 Material 风格

python - 使用编码打开内存映射文件

python - python中的str性能

c - 在这种情况下是否发生堆碎片?

c++ - GlobalLock 多线程

python - 如何从另一个文件夹读取数据文件而不给出python中的完整路径?

python-3.x - 如何修复 "If using all scalar values, you must pass an index"错误?

mysql - INSERT INTO ndbtable SELECT FROM table 在 MySQL Cluster 中使用了荒谬的内存量