web-dev-qa-db-ja.com

WMIを使用したプロセスのCPUとメモリの使用量を知る方法は?

マシンで実行されているプロセスの動作を追跡するために、wmiとpythonを使用しています。

 from win32com.client import GetObject 
 wmi = GetObject( 'winmgmts:')
 processes = wmi.InstancesOf( 'Win32_Process')
 
プロセス内のプロセスの場合:
 print process.ProcessId、process.Name 

Win32_Processには 多くの情報 がありますが、CPU消費を追跡するための情報が何も表示されません。ウィンドウのタスクモニターにこの情報が表示されているので、取得できると思います。

WorkingSetSizeプロパティがプロセスのメモリ消費を与えていると思いましたが、TaskMonitorによって与えられたものとは異なる値を見ることができます。

特定のプロセスに対してこれら2つの値を取得するにはどうすればよいですか?

更新:タスクモニターに、Win32_Processでは使用できないように見えるPrivateWorkingSetSizeが表示されます。 WorkingSetSizeとPrivateWorkingSetSizeの違いは何ですか?

14
luc

WMIパフォーマンスクラスが必要だと確信しています Win32_PerfFormattedData_PerfProc_Process または Win32_PerfRawData_PerfProc_Process

例えば。それらのプロパティPercentProcessorTimeおよびWorkingSet

Perfクラスを理解するには少し手間がかかることに注意してください。

ただし、これらのWMIクラスは、探しているすべての情報を提供するはずです。

10
Daryn
2
Mitch Wheat

Win32_Processには、CPU使用率の計算に使用できるUserModeTimeとKernelModeTimeもあります。

http://technet.Microsoft.com/en-us/library/ee176718.aspx もご覧ください。

1
Matt Watson