如何通过WMI了解进程的CPU和内存使用情况?

我正在使用wmi和python来跟踪在我的机器上运行的进程的行为。

从win32com.client中导入GetObject
 wmi = GetObject('winmgmts:')
 processes = wmi.InstancesOf('Win32_Process')

进程中的进程:
    打印process.ProcessId,process.Name 

Win32_Process有很多信息,但是我没有看到跟踪CPU消耗的任何信息 。 窗口任务监视器显示这个信息,所以我认为有可能得到它。

我认为WorkingSetSize属性给予了进程的内存消耗,但是我可以看到与TaskMonitor给出的值不同的值。

如何获得给定过程的这2个值?

更新:任务监视器显示似乎与Win32_Process不可用的PrivateWorkingSetSize。 WorkingSetSize和PrivateWorkingSetSize有什么区别?

我很确定你想要的WMI perf类Win32_PerfFormattedData_PerfProc_Process或Win32_PerfRawData_PerfProc_Process

例如它们的属性PercentProcessorTimeWorkingSet

请注意,Perf类需要花费一点努力才能理解。

  • 有格式化版本的疑难问题(请参阅嗨,脚本专家!文章为什么我的性能监视脚本保持返回相同的错误值? )
  • 原始数据类需要注意将“ CounterType ”转换为正确的数学公式,以便根据原始数据来计算值。 看看我的驾驶如何? 监视性能使用WMI作为起点。

但是那些WMI类应该给你所有你想要的信息。

请参见:

  • WMI简化了C#

  • 如何在Python中获取当前的CPU和RAM使用情况?

也可能是有趣的:

  • 使用WMI获取在远程计算机上运行的进程的当前内存利用率

Win32_Process也有UserModeTime和coreelModeTime,可以用来计算CPU使用率

另请参阅http://technet.microsoft.com/en-us/library/ee176718.aspx