tags:

views:

374

answers:

2

I am using a wmi and python in order to track the behavior of the process running on my machine.

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

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

The Win32_Process has a lot of information but I don't see anything for tracking the CPU consumption. The window Task Monitor is showing this info so I think it is possible to get it.

I thought that the WorkingSetSize property is giving the memory consumption of the process but I can see different value from what is given by TaskMonitor.

How to get these 2 values for a given process?

Update: Task Monitor shows the PrivateWorkingSetSize which seems to be not available with the Win32_Process. What is the difference betwen WorkingSetSize and PrivateWorkingSetSize?

A: 

Please see:

Might also be of interest:

Mitch Wheat
Thnaks for your answer. Unfortunately, this question doesn't answer my question. Is the cpu usage of the process available with the Win32_Process object?
luc
@luc: I've u[dated with the "WMI Made Easy For C#" link
Mitch Wheat
+1  A: 

I'm pretty sure you want the WMI perf classes Win32_PerfFormattedData_PerfProc_Process or Win32_PerfRawData_PerfProc_Process

E.g. their properties PercentProcessorTime and WorkingSet

Note that the Perf classes take a bit effort to understand.

But those WMI classes should give you all the info you're looking for.

Daryn
It makes exactly what I want! Thank you so much
luc