python - 获取整个进程组的cpu使用率
问题描述
问题
我有一个使用 Popen 运行的程序,它产生了一堆子进程。这些子进程每隔几分钟就会关闭一次,以被新的子进程替换。主进程(我称之为 Popen 的程序)很快就死掉了。我试图弄清楚如何获取进程组中所有内容的 cpu 使用率。
我试过的
我试过wait4和getrusage。我也尝试过 psutil 但我意识到,如果我想检查资源使用情况,我必须生成一堆线程来同时检查所有超进程的资源使用情况,这会很混乱且容易出错。
这是一个不起作用的代码示例。它仅获取直系子级的资源使用情况,而没有获取大子级的资源使用情况。
old = time.time()
proc = Popen(["g09", "../sto.com"], text=True, stderr=PIPE, preexec_fn=setsid)
ru = wait4(proc.pid, 0)
new = time.time()
print(100*(ru.ru_utime + ru.ru_stime)/(new - old))
ru = getrusage(RUSAGE_CHILDREN)
print(100*(ru.ru_utime + ru.ru_stime)/(new - old))
我需要设置一个新的 sid(或 pgid),因为有时我想在进程完成之前终止它,如果我不设置一个新的,那么整个 python 脚本就会随之失败。
附言我可以只使用 time 命令(如Popen(["time", "g09",...])
),但我想知道是否只有在 python 中才能做到这一点。
解决方案
推荐阅读
- node.js - 如何使多个填充
- python - 如何摆脱值错误显示无法在python中将字符串转换为浮点数
- html - 博客的缩略图元问题
- javascript - css动画结束后如何运行函数
- android - 插件APK调用时,如何保证不被三方BaseAPK恶意调用?
- selenium - 质量保证 | 如何使用 QAF 测试 Angular 和 React 等新时代技术
- tabs - 如何在单击时在选项卡组件中更新 JustPy 中的模型?
- google-apps-script - Google 应用脚本将 CSV 导入 Google 表格
- xamarin - 如何为 Xamarin 自动重建 UITest 项目的 APK OnBuild
- security - 删除错误 400 和 500 的服务器响应标头 IIS8