多分私は何かを見落としているかもしれませんが、私はどのようにそれらを反復せずにすべてのプロセスのためにcurrent_process.cpu_percent(interval=0.1)
を取得するかを理解できません。現在、反復処理にはprocess_count * interval
秒かかります。これを回避する方法はありますか?psutil:すべてのプロセスのCPUを取得
これまでのところ、私がやっている:
#!/usr/bin/env python2
import psutil
cpu_count = psutil.cpu_count()
processes_info = []
for proc in psutil.process_iter():
try:
pinfo = proc.as_dict(attrs=['pid', 'username', 'memory_info', 'cpu_percent', 'name'])
current_process = psutil.Process(pid=pinfo['pid'])
pinfo["cpu_info"] = current_process.cpu_percent(interval=0.1)
processes_info.append(pinfo)
except psutil.NoSuchProcess:
pass
print processes_info
を限り、私はそれを理解して、私はattr
-listにcpu-percent
を含めることはできません、ヘルプ状態以来
間隔が0.0以上である場合にはNoneは、直前の呼び出しまたはモジュールのインポート以降に経過したシステムCPU時間を比較し、直ちに戻る。つまり、これが初めて呼び出されたときに、無視すると思われる無意味な0.0の値が返されます。
このソリューションは、並列測定のように機能するようです。この解決策は 'process_count * interval'から' interval'までの時間を短縮します。 –