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 使用率测量的主要内容,如果未能解决你的问题,请参考以下文章

如何测量java程序中方法的cpu使用率[重复]

如何在负载测试期间测量 CPU 和内存

测量使用预编译库(C++、Linux)的程序的总 CPU 时间

如何在 Windows 平台上测量应用程序的运行时内存需求?

%%time 在 Jupyter 笔记本中的 Windows 上不返回 CPU 时间

如何计算理论上的最大 CPU-RAM 带宽?