我正在为python2.7使用库psutil。
考虑一下这个小项目:
import os
import psutil
# return the memory usage in MB
process = psutil.Process(os.getpid())
print process.memory_info().rss / float(2 ** 20)程序返回的内存信息总是不同的。我不明白我的应用程序为什么总是在执行相同的操作(在这里,几乎什么都不做),在每次执行时都不会有相同的内存占用。
示例(每一行都是不同的执行):
我是不是漏掉了什么?
发布于 2015-06-13 13:50:49
测量记忆占用就像在运动中拍摄某人的照片。ps实用程序并不总是看到与您的script+variables相同的大小,其中一些部件并不总是可见的。类被实例化,然后被销毁。变量被分配,然后再次释放。
如文档所述,“垃圾”收集器是动态类型化语言(如Python )常见的,它在某些时候运行,而这些时间并不总是与测量间隔同步的,因此您会看到变化。
令人担心的是,如果内存占用会持续增加,那么我们就会有一个内存“泄漏”(例如。如果有一个递归调用占用不断增加的资源,则可能发生这种情况)。
程序可预见的时间已经过去了(除非你为微控制器编写程序)。程序在多任务环境中运行,程序和操作系统持续(同时)争夺计算机资源。
但是现代程序,如Python、Ruby、Perl和其他程序,在每次执行时都不一样。它们受可用内存的影响(由于正在运行的其他程序而不同)。
请注意,这不是你要测试的5行程序。就坐process = psutil.Process(os.getpid())线吧。它调用os.getpid(),它调用操作系统的getpid()。结果会进入psutil.Process,它可能会调用几百行代码。最后,看似无辜的process =必须调用内存管理器来为process保留内存,然后将结果传输到那里.
https://stackoverflow.com/questions/30819228
复制相似问题