擅长:python、mysql、java
<p>这并不容易,因为您描述的大多数进程都提供了CPU使用率的累积或总平均值。在</p>
<p>也许您可以尝试使用te<code>systat</code>包附带的<code>mpstat</code>命令。在</p>
<p>因此,我在以下脚本中使用的步骤是:</p>
<ol>
<li>要求<code>mpstat</code>生成两个报告,一个现在,另一个在1秒后(<code>mpstat 1 2</code>)</li>
<li>然后我们得到<code>Average</code>行(最后一行)</li>
<li>最后一列是<code>%idle</code>列,因此我们用<code>awk</code>中的<code>$NF</code>变量得到它</li>
<li>我们使用来自子进程的<code>Popen</code>,但是设置<code>shell=True</code>来接受管道(<code>|</code>)选项。在</li>
<li>我们执行命令(<code>communicate()</code>)</li>
<li>使用<code>strip</code>清除输出</li>
<li>从100减去空闲百分比,我们就可以得到使用的值。在</li>
</ol>
<p>因为它将休眠<code>1 second</code>,所以不要担心它不是一个<em>即时</em>命令。在</p>
<pre><code>import subprocess
cmd = "mpstat 1 2 | grep Average | awk '{print $NF}'"
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True)
out, err = p.communicate()
idle = float(out.strip())
print(100-idle)
</code></pre>