【问题标题】:psutil gives other result than resourcepsutil 提供资源以外的其他结果
【发布时间】:2020-09-20 20:10:31
【问题描述】:

我想检查我的 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。当然如您所见,在第一种情况下是千字节,在第二种情况下是字节,但除此之外它也有所不同。

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

【问题讨论】:

    标签: python memory out-of-memory


    【解决方案1】:

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

    内存分析器中存在一个错误(当时正在使用 resource.getrusage)。在这个blog post the different methods for memory measurements are described。我引用:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      • 2011-03-30
      • 2021-07-18
      • 1970-01-01
      相关资源
      最近更新 更多