我正在使用 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_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 类应该会为您提供所需的所有信息。
关于windows - 如何使用 WMI 了解进程的 CPU 和内存使用情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1476018/