2017-04-10 3 views
0

今、私はpsutilを使用してプロセスの現在のCPU使用率を得ることができますが、私は最後の5分、10分、15分の平均CPU使用率を取得したいと思います。任意のプロセスの最後の5分間のCPU使用率を取得できますか?

+0

平均して5分、10分、15分を追跡していますか? – Carcigenicate

+0

私は今も同じことをしていますが、私は過去5分間の記録が必要です。出来ますか ? –

+0

私はちょうど絶え間なく追跡して、最後の* n *分を平均して記録します。 – Carcigenicate

答えて

0

提案1

私は、次のコードをテストしていない - 説明のみのためにそれを共有します。

5,10,15分のCPU使用量を計算/印刷する3つのスレッドをそれぞれ使用します。ドキュメントあたりとして 使用psutil.cpu_percent(interval=0.0)、:

戻り 割合として現在のシステム全体のCPU使用率を表すフロート...間隔が0.0であるか、なし が戻って、最後の呼び出しやモジュールのインポートから経過したシステムCPU時間を比較していませんすぐに... psutil.cpu_percent(間隔= 0.0)後

は、特定の間隔(あなたは平均的な使用をしたい時間)のためにスリープ状態にスレッドを置く:

import os 
import time 
import psutil 

....... 

p = psutil.Process(os.getpid()) # pid of the current process 
p.cpu_percent(interval=0.0) 
time.sleep(300) # for 5 mins cpu usage 

...... 

提案2

単一スレッド一定間隔(毎分)でのCPU使用率(アレイに追加する)を記録、別のスレッドの値をとり、平均値を計算する、すなわち、最後の5つの値を取得します同様に最後の10個の値を10で割って除算します。

この場合、最初のスレッドは値を固定長(15分(CPU使用量))のキューに入れなければなりません。このためには、collections.deque使用することができます。MAXLENが指定またはNoneですされていない場合

q = collections.deque(maxlen=15) 
q.append(elem) 

を、dequeのは、任意の の長さに成長することがあります。それ以外の場合は、両端キューは指定された最大長の にバインドされます。バインドされた長さ両端キューがいっぱいになり、新しいアイテムが追加されると、 対応する数のアイテムが反対側の端から廃棄されます

関連する問題