首页 > 解决方案 > psutil 提供资源以外的其他结果

问题描述

我想检查我的 python 代码的内存消耗,因此在代码中添加了以下行:

import resource
print(resource.getrusage(resource.RUSAGE_SELF).ru_maxrss)

作为替代方案,我也尝试过这个:

import psutil
process = psutil.Process(os.getpid())
print(process.memory_info().rss)  # in bytes

但是,我得到了不同的结果,例如来自资源的 866 480 和来自 psutil 的 730 689 536。当然,正如您所看到的,在第一种情况下是千字节,在第二种情况下是字节,但除此之外它也有所不同。

阅读文档,我仍然不明白导致差异的原因,因此输入会很有价值。

标签: pythonmemoryout-of-memory

解决方案


TLDR:resource.getrusage 有时会忽略 Python 已从内存中删除对象

内存分析器中有一个错误(当时正在使用 resource.getrusage)。在这篇博文中,描述了内存测量的不同方法。我引用:

“这种方法 [resource.getrusage] 比基于 psutil 的方法快几倍 [...] 这种方法的问题是它报告的结果似乎在某些情况下略有不同。值得注意的是,当对象时它似乎有所不同最近已从 python 解释器中解放出来。在以下示例中,孤立数组由 python 解释器解放,psutil 可以正确看到,但资源不能正确看到..."


推荐阅读