2009-09-25 13 views
12

Sto usando un wmi e python per tracciare il comportamento del processo in esecuzione sulla mia macchina.Come conoscere l'utilizzo della CPU e della memoria di un processo con WMI?

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

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

Il Win32_Process ha un lot of information ma non vedo niente per il monitoraggio del consumo di CPU. La finestra Task Monitor mostra queste informazioni quindi penso che sia possibile ottenerle.

Ho pensato che la proprietà WorkingSetSize stia dando il consumo di memoria del processo ma posso vedere un valore diverso da quello che viene dato da TaskMonitor.

Come ottenere questi 2 valori per un determinato processo?

Aggiornamento: Monitor attività mostra PrivateWorkingSetSize che sembra non essere disponibile con Win32_Process. Qual è la differenza tra WorkingSetSize e PrivateWorkingSetSize?

risposta

9

Sono abbastanza sicuro che si desidera che le classi Potenza WMI Win32_PerfFormattedData_PerfProc_Process o Win32_PerfRawData_PerfProc_Process

Ad es le loro proprietà PercentProcessorTime e WorkingSet

Nota che le classi Perf prendono uno sforzo po 'per capire.

Ma quelle classi WMI dovrebbero darti tutte le informazioni che stai cercando.

+0

Fa esattamente quello che voglio! Grazie mille – luc

2
+0

Thnaks per la risposta. Sfortunatamente, questa domanda non risponde alla mia domanda. L'utilizzo della CPU del processo è disponibile con l'oggetto Win32_Process? Il collegamento "WMI Made Easy for C#" – luc

+0

non funziona. – damianb

+0

Funziona ora - grazie. Speriamo che si riveli utile agli altri nella loro ricerca su google.:) – damianb

Problemi correlati