たぶん私は何かを見落としているかもしれませんがcurrent_process.cpu_percent(interval=0.1)
、すべてのプロセスを一度に反復処理せずに取得する方法がわかりません。現在、反復処理がprocess_count * interval
完了するまでに数秒かかります。これを回避する方法はありますか?
これまでのところ、私はやっています:
#!/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
私が理解している限り、ヘルプに記載cpu-percent
されているため、リストに含めることはできませんattr
interval が 0.0 または None の場合、最後の呼び出しまたはモジュールのインポートから経過したシステム CPU 時間を比較し、すぐに戻ります。これは、これが最初に呼び出されたときに意味のない 0.0 値を返すことを意味しますが、無視する必要があります。