我正在写一个python脚本,我想知道在我执行某些命令后,Python进程的RAM增加了多少。就这样
Memory1 = .... byte
#Some instructions ...
Memory2 = .... byte
我可以在代码中输入什么命令?
答案 0 :(得分:1)
除了进行外部系统调用以获取有关当前进程的信息之外,没有内置方法可以做到这一点。内存使用情况,例如直接在Linux中读取当前进程的/proc/meminfo
。
如果您对标准库中仅支持Unix的解决方案感到满意,该解决方案只能返回使用的峰值resident memory ,那么您正在寻找resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
。
此函数返回一个对象,该对象描述当前进程或其子进程所消耗的资源......
>>> resource.getrusage(resource.RUSAGE_SELF)
resource.struct_rusage(ru_utime=0.058433,
ru_stime=0.021911999999999997, ru_maxrss=7600, ru_ixrss=0,
ru_idrss=0, ru_isrss=0, ru_minflt=2445, ru_majflt=1, ru_nswap=0,
ru_inblock=256, ru_oublock=0, ru_msgsnd=0, ru_msgrcv=0, ru_nsignals=0,
ru_nvcsw=148, ru_nivcsw=176)
这将无法告诉您在调用之间分配了多少内存,但跟踪应用程序生命周期内使用的峰值内存的增长可能很有用。
一些用C语言编写的Python分析器已经开发出来,可以直接与CPython接口,它能够检索有关所用总内存的信息。一个例子是Heapy,它也具有图形绘制能力。
如果您只想跟踪新对象添加到堆栈时所消耗的内存,则可以始终在每个新对象上使用sys.getsizeof()
来获取分配的运行总空间。