我试图使用python的日志记录linux中特定进程的CPU和RAM消耗的输出操作系统()命令。为了区分每次迭代的输出,我在上面和下面添加了带有迭代号的print语句操作系统()命令。在
我的代码如下:
import os
i=0
while i<30:
print "----CPU----"
op=os.system("ps -raxxxo pid,%cpu,%mem,vsize,time,command | grep -E 'java|gui' ")
print i
i+=1
sleep(1.0/3.0)
现在看看我的剧本,不要满足我的期望。我看到所有迭代的输出操作系统先打印,然后这些打印语句在末尾。这无助于区分每个迭代的输出。在
运行python后的输出脚本.py>;&;日志.txt. (我在linuxenv中运行这个脚本)-部分输出
^{pr2}$我怎样才能在python中得到像下面这样的输出?在
----CPU----
1332 0.0 3.6 572960 5:56.04 /data/bin/gui
20978 0.0 0.5 79480 1:47.16 java
13043 0.0 0.0 18976 0:00.00 grep -E java|gui
<iteration-number>
期待社会各界的回答和评论。另外,如果这是一个重复的问题,请给我指出一个类似的问题,因为我没有得到类似的问答。在
似乎
os.system
和print
使用不同的缓冲区,它们在不同的时间刷新!(有关说明,请参见here和crosslink)以下操作适用于我(强制刷新输出):
或者:
-u
标志禁用缓冲输出(python -u /tmp/test.py 1> /tmp/test.log
)希望有帮助
厄本的回答给出了很好的背景和一般的提示。。。在
。。。来回答你的问题。您只需在一行程序的每个调用中添加一个
date
调用,例如或者
^{pr2}$对于可读性较差、但输出更清晰的内容。在
相关问题 更多 >
编程相关推荐