如何使用 WMI 了解进程的 CPU 和内存使用情况?
Posted
技术标签:
【中文标题】如何使用 WMI 了解进程的 CPU 和内存使用情况?【英文标题】:How to know the CPU and memory usage of a process with WMI? 【发布时间】:2010-12-01 08:28:20 【问题描述】:我正在使用 wmi 和 python 来跟踪在我的机器上运行的进程的行为。
从 win32com.client 导入 GetObject wmi = GetObject('winmgmts:') 进程 = wmi.InstancesOf('Win32_Process') 对于进程中的进程: 打印 process.ProcessId, process.NameWin32_Process 有一个lot of information,但我没有看到任何用于跟踪 CPU 消耗的信息。窗口任务监视器正在显示此信息,因此我认为可以获取它。
我认为 WorkingSetSize 属性给出了进程的内存消耗,但我可以看到与 TaskMonitor 给出的不同的值。
如何获取给定进程的这两个值?
更新: 任务监视器显示 Win32_Process 似乎不可用的 PrivateWorkingSetSize。 WorkingSetSize 和 PrivateWorkingSetSize 有什么区别?
【问题讨论】:
【参考方案1】:请看:
WMI Made Easy For C#
How to get current CPU and RAM usage in Python?
也可能感兴趣:
Get current memory utilisation of a process running on a remote machine with WMI【讨论】:
感谢您的回答。不幸的是,这个问题没有回答我的问题。 Win32_Process 对象是否提供进程的 cpu 使用率? “WMI Made Easy for C#”链接似乎失效了。 现在工作 - 谢谢。希望它在其他人自己的谷歌搜索中证明是有用的。 :)【参考方案2】:我很确定您想要 WMI 性能类 Win32_PerfFormattedData_PerfProc_Process 或 Win32_PerfRawData_PerfProc_Process
例如它们的属性 PercentProcessorTime 和 WorkingSet
请注意,Perf 类需要花费一些精力才能理解。
格式化版本存在一些问题(请参阅嘿,脚本专家! 文章 Why Does My Performance Monitoring Script Keep Returning the Same Incorrect Values?) 原始数据类需要注意将“CounterType”转换为正确的数学公式,以用于根据原始数据计算值。请参阅 How's My Driving? Monitoring Performance Using WMI 了解起点。但是那些 WMI 类应该会为您提供您正在寻找的所有信息。
【讨论】:
这正是我想要的!非常感谢【参考方案3】:Win32_Process 也有 UserModeTime 和 KernelModeTime 可以用来计算 CPU 使用率
也看http://technet.microsoft.com/en-us/library/ee176718.aspx
【讨论】:
以上是关于如何使用 WMI 了解进程的 CPU 和内存使用情况?的主要内容,如果未能解决你的问题,请参考以下文章