擅长:python、mysql、java
<p>似乎<code>os.system</code>和<code>print</code>使用不同的缓冲区,它们在不同的时间刷新!(有关说明,请参见<a href="https://stackoverflow.com/a/15731329/3727050">here</a>和<a href="https://stackoverflow.com/questions/107705/disable-output-buffering">crosslink</a>)</p>
<p>以下操作适用于我(强制刷新输出):</p>
<pre><code>import os
import sys
from time import sleep
i=0
while i<30:
print " CPU "
sys.stdout.flush()
op=os.system("ps -e -o pid,%cpu,%mem,vsize,time,command | grep java | grep -v grep ")
sys.stdout.flush()
print i
sys.stdout.flush()
i+=1
sleep(1.0/3.0)
</code></pre>
<p>或者:</p>
<ul>
<li>使用<code>-u</code>标志禁用缓冲输出(<code>python -u /tmp/test.py 1> /tmp/test.log</code>)</li>
<li>使用<a href="https://stackoverflow.com/a/10405562/3727050">subprocess.check_output()</a>或</li>
<li>对idividual进程(而不是生成一个shell)进行管道化,这是一个比较冗长的过程(请参见<a href="https://stackoverflow.com/a/9393539/3727050">here</a>)</li>
</ul>
<p>希望有帮助</p>