Python 调试内存消耗\已运行脚本的泄漏

Python 调试内存消耗\已运行脚本的泄漏,python,debugging,python-2.7,memory-leaks,gdb,Python,Debugging,Python 2.7,Memory Leaks,Gdb,我有一个Python程序,它开始消耗大量内存。问题是,它已经工作了大约2天,没有任何问题,但突然开始吃很多公羊。剧本很大,很难理解那里发生了什么 是否有任何方法可以附加到正在运行的进程并转储有关对象的信息?这样我就能理解那里发生了什么 为此,我使用了一些python模块,它向我报告了如下数据: Strings: 4567, total memory: 45MB Lists: 32, total memory: 12MB Dicts: 1, total memory: 1MB ... 当然,这只

我有一个Python程序,它开始消耗大量内存。问题是,它已经工作了大约2天,没有任何问题,但突然开始吃很多公羊。剧本很大,很难理解那里发生了什么

是否有任何方法可以附加到正在运行的进程并转储有关对象的信息?这样我就能理解那里发生了什么

为此,我使用了一些python模块,它向我报告了如下数据:

Strings: 4567, total memory: 45MB
Lists: 32, total memory: 12MB
Dicts: 1, total memory: 1MB
...
当然,这只是一个想法——任何与内存相关的报告都值得赞赏

我找到了调试正在运行的进程的唯一有效解决方案:gdb。但我一点也不熟悉

请注意,我不想更改代码、导入pdb、重新启动脚本等-否则我必须再次等待2天


谢谢大家!

在基于glibc的系统上,您可以使用gdb heap扩展来检查正在运行的进程的堆。gdb heap也知道Python如何进行内存管理。请参阅:

您可以使用
-p
附加到流程。您甚至可以使用
ltrace
/
strace
仅获取内存分配。例如,见@MihaiMaruseac谢谢你的帖子