2009-09-25 20 views
12

Estoy usando un wmi y python para rastrear el comportamiento del proceso que se ejecuta en mi máquina.¿Cómo saber el uso de la CPU y la memoria de un proceso con WMI?

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

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

El Win32_Process tiene un lot of information pero no veo nada para el seguimiento del consumo de CPU. La ventana Task Monitor muestra esta información, así que creo que es posible obtenerla.

Pensé que la propiedad WorkingSetSize está dando el consumo de memoria del proceso, pero puedo ver un valor diferente de lo que da TaskMonitor.

¿Cómo obtener estos 2 valores para un proceso determinado?

Actualización: El Monitor de tareas muestra el PrivateWorkingSetSize que parece no estar disponible con el Win32_Process. ¿Cuál es la diferencia entre WorkingSetSize y PrivateWorkingSetSize?

Respuesta

9

Estoy bastante seguro de que desea las clases WMI Potencia Win32_PerfFormattedData_PerfProc_Process o Win32_PerfRawData_PerfProc_Process

P. ej sus propiedades PercentProcessorTime y WorkingSet

Note que las clases Perf toman un poco esfuerzo de entender.

Pero esas clases de WMI deberían darle toda la información que está buscando.

+0

¡Hace exactamente lo que quiero! Muchas gracias – luc

2
+0

Thnaks por su respuesta. Lamentablemente, esta pregunta no responde mi pregunta. ¿El uso de la CPU del proceso está disponible con el objeto Win32_Process? – luc

+0

El enlace "WMI Made Easy for C#" parece estar muerto. – damianb

+0

Funciona ahora - Gracias. Con suerte, será útil para otros en su propia búsqueda en Google.:) – damianb

Cuestiones relacionadas