Windows 上程序的 CPU 使用率测量
Posted
技术标签:
【中文标题】Windows 上程序的 CPU 使用率测量【英文标题】:CPU usage measurement of a program on Windows 【发布时间】:2015-01-13 23:04:53 【问题描述】:我有一个在 Windows 上运行的 Python 应用程序,它有点占用 CPU,我正试图弄清楚我的一些设计选择的影响。
有没有办法在指定时间段内测量特定进程的 CPU 利用率,包括总 CPU 和每个核心的 CPU 利用率?(每个核心很重要,因为 Python 的 GIL 阻止了该程序在很大程度上不会使用多个内核,因此对于我的 8 核 PC,“仅”12% 的 CPU 负载几乎会耗尽一个内核)
我有 Sysinternals Process Explorer,它以 1 秒的间隔显示总 CPU 使用率:
但是 CPU 使用率会上下波动,所以我想使用更长的测量间隔,基本上遵循这个过程:
启动我的 Python 应用程序 配置我的应用程序(它有一个 UI)以某种方式运行 在较长的时间间隔(10-60 秒)内测量 CPU 使用率 以不同的方式配置我的应用程序 在较长的时间间隔(10-60 秒)内测量 CPU 使用率 根据需要重复其他配置【问题讨论】:
这不是关于您正在寻找的测量,而是this answer 中关于如何分析 Python 脚本的参考资料可能对您有用。 是的,我已经在某种程度上研究了剖析;不幸的是,我在 Python 中做了一些邪恶的事情,而探查器会导致问题。所以我真的只是在寻找 CPU 测量值。 【参考方案1】:看看psutil libary for python?
你可以使用这个功能
psutil.pids()
获取进程ID列表,然后以这种方式选择特定进程(101是任意的):
your_process = psutil.Process(101)
您还可以获取此进程的 CPU 使用情况:
your_process.cpu_percent(interval=1.0)
您也许可以将这些处理成脚本以满足您的需求。我希望这会有所帮助,祝你好运!
【讨论】:
感谢您的信息——不幸的是,这给了我错误的结果(至少与似乎一致的 Process Explorer 和 System Explorer 相比);我的 Python 应用程序占用了大约 7% 的 CPU,但 psutil 的your_process.get_cpu_percent(interval=1.0)
告诉我大约 25-30%。以上是关于Windows 上程序的 CPU 使用率测量的主要内容,如果未能解决你的问题,请参考以下文章
测量使用预编译库(C++、Linux)的程序的总 CPU 时间
如何在 Windows 平台上测量应用程序的运行时内存需求?