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

标签 windows wmi

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

from win32com.client import GetObject
wmi = GetObject('winmgmts:')
processes = wmi.InstancesOf('Win32_Process')

for process in processes:
    print process.ProcessId, process.Name 

Win32_Process 有一个 lot of information但我没有看到任何用于跟踪 CPU 消耗的信息。任务监视器窗口正在显示此信息,所以我认为可以获取它。

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

如何为给定进程获取这 2 个值?

更新: 任务监视器显示 PrivateWorkingSetSize,它似乎不适用于 Win32_Process。 WorkingSetSize 和 PrivateWorkingSetSize 有什么区别?

最佳答案

我很确定您需要 WMI 性能类 Win32_PerfFormattedData_PerfProc_ProcessWin32_PerfRawData_PerfProc_Process

例如它们的属性 PercentProcessorTimeWorkingSet

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

但是那些 WMI 类应该会为您提供所需的所有信息。

关于windows - 如何使用 WMI 了解进程的 CPU 和内存使用情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1476018/

相关文章:

c# - 远程 WMI 查询速度慢

security - 使用PowerShell和WMI读取安全日志

c# - 为什么在我的相同代码的可执行文件正在工作时在我的 c# 脚本中得到 System.NullReferenceException?

c++ - 根据状态在不同文件上叠加图标

windows - 任务列表显示所有窗口

windows - 识别重启

c# - 如何在 C# 中获取所有正在运行的服务?

c# - BIOS 序列号的最大长度是多少?

windows - 从 HKEY_USERS 值获取用户名

c++ - 如何最好地将 VARIANT_BOOL 转换为 C++ bool?