2016-12-18 35 views
2

プロセスツリーのCPU使用量を測定しようとしています。psutil:特定のプロセスのCPU使用量を測定する

現在、プロセスのcpu_usage(子なし)が実行されますが、私は奇妙な結果を得ています。

import psutil 
p = psutil.Process(PID) 
p.cpu_percent 

はあっても可能であるか、バックfloat>100私を与えますか?

ところでPIDは、タスクマネージャに応じてCPUの使用率は約12%

私は12.5またはそのような何かの出力を取得したいです

def foo(): 
    i = 0 
    while True: 
     i += 1 

な単純なもののPIDです。

答えて

2

私はpsutilに関するいくつかのドキュメントを読んで、ここで私が得たものである:

注:それは異なるCPUコア上で実行されている>複数のスレッドを持つプロセスから生じうるとして> 100割合が正当なものです。だから、

あなたはこのような何かをすべき> 100を取り除くために:

注:返された値がexplcitly(違っpsutil.cpu_percentから(すべてのCPUコア間で均等に分割されていませんが) )。つまり、2つのCPUコアを持つシステム上で実行されるビジーループプロセスは、50%ではなく100%のCPU使用率を持つと報告されます。これは、UNIXの「トップ」ユーティリティーと一貫性を持たせ、(CPUコアの数とは無関係に)CPUリソースを増やすプロセスを簡単に識別できるようにするために行われました。上記の例では、Windows上のtaskmgr.exeが代わりに50%の使用率を報告することに注意する必要があります。 Windowsのtaskmgr.exeの動作をエミュレートするには、次の操作を実行します。

p.cpu_percent()/ psutil.cpu_count()

私はどこか別の場所からこの答えを得たので、私はそれをチェックするためにあなたのリンクをあげるアウト :http://psutil.readthedocs.io/en/release-2.2.1/#psutil.Process.cpu_percent

関連する問題