【发布时间】:2022-01-16 20:35:29
【问题描述】:
我有一个 Python 进程在很长一段时间(至少 10 小时,有时更多)后开始泄漏内存。这个问题很难重现,因此我想在问题出现时附加到正在运行的 Python Interpreter 并以某种方式检查内存使用情况,例如通过获取当前分配最多内存的对象列表。
这对于tracemalloc 或memory-profiler 等常用的分析工具来说是困难的,因为它们需要成为代码的一部分或与进程一起启动,并且它们对运行时性能有重大影响。
我想要的是一个采样分析器,我可以简单地将它附加到现有的 Python 进程,如 py-spy,但 py-spy 只能让我了解函数花费的 CPU 时间,而不是内存使用情况。
是否有其他工具或不同的方法可以帮助我深入了解现有 Python 进程的内存使用情况?
edit:我刚刚找到了pyrasite,它提供了pyrasite-memory-viewer 命令,这正是我正在寻找的,但不幸的是,该项目似乎被放弃,我无法让它在 Python 3.8 上运行。
【问题讨论】:
-
这可能会有所帮助*.com/questions/552744/…
-
@sahasrara62 抱歉,这不是我要找的。所有的答案都是关于需要集成到应用程序中的分析工具,或者至少应用程序需要由分析器启动。我正在寻找一种在运行时检查内存使用情况的方法,而无需之前集成任何探查器。
-
pycharm 有一些分析器,但不知道它们是否在运行时支持
-
请注意,您安装 pyrasite 的 python 不需要与您检查的 python 相同,您仍然可以使用跨 python 版本让它工作
标签: python python-3.x memory-leaks profiling