栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在Python中使用psutil获得程序的最大内存使用率

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在Python中使用psutil获得程序的最大内存使用率

<defunct>
表示该子进程是一个僵尸进程(已死,但其父级(
p.poll()
p.wait()
)尚未读取其状态)。这似乎都
psutil
ps
节目
RSS
是这样的过程为零。

结果取决于子流程是否比

p.memory_info()
调用的更早退出。这是一场比赛。如果您在C
++程序的出口处添加了延迟,则
p.memory_info()
可能在子进程退出之前被调用,并且您应该获得非零的结果。

问题是我可以得到任意程序进行评估。语言也不是固定的。没有解决这个问题的优雅方法吗?

您可能需要操作系统支持才能保存有关子进程内存使用情况的信息,即使该进程退出后也是如此。或者,您可以使用诸如的内存分析器运行该程序

valgrind
并读取其结果。收集结果:

$ valgrind --tool=massif cmd arg1 arg2

要查看结果,可以使用

ms_print

$ ms_print massif.out.* | less

或GUI

Massif-Visualizer

@mdadm建议了一个更简单的解决方案:

time
命令:

from subprocess import Popen, PIPEp = Popen(['time', '-f', '%M'] + args, stderr=PIPE)ru_maxrss = int(p.communicate()[1])print("Maximum rss %d KB" % ru_maxrss)

GNU时间用于

wait3()
填充资源使用情况信息(如果可用)。可以在Python中调用:

import osfrom subprocess import Popenp = Popen(args)ru = os.wait4(p.pid, 0)[2]print("Maximum rss %d KB" % ru.ru_maxrss)

我已经比较了

psutil.Process.memory_info
(rss)
ru_maxrss
返回
os.wait4
的最大值,和返回的值以及通过报告的最大总内存
valgrind--tool=massif
它们是相似的



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/410733.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号