Python psutil提供资源以外的其他结果

Python psutil提供资源以外的其他结果,python,memory,out-of-memory,Python,Memory,Out Of Memory,我想检查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 然而,我得到了不同的结果,例如,来自resource的866

我想检查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
然而,我得到了不同的结果,例如,来自resource的866 480和来自psutil的730 689 536。当然,正如您所看到的,在第一种情况下是千字节,在第二种情况下是字节,但除此之外,这也是一个区别


阅读文档时,我仍然不理解造成差异的原因,因此输入是有价值的。

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

内存分析器(当时正在使用resource.getrusage)中有一个bug。在这方面。我引述:

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