我正在尝试使用Python将vmstat的输出转换为CSV文件,因此我使用类似的东西转换为CSV并将日期和时间添加为coloumns:
vmstat 5 | python myscript.py >> vmstat.log
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是它在尝试迭代sys.stdin时阻塞.似乎输入缓冲区没有被刷新.我不想无休止地循环并烧掉处理器时间,因为我正在尝试测量它.这是一个简单的演示,在第3行阻止:
import sys
for line in sys.stdin:
sys.stdout.write(line)
sys.stdout.flush()
Run Code Online (Sandbox Code Playgroud)
是否有一种简单的方法可以像grep一样立即访问流,而不会在输入缓冲区填满时暂停?
VMstat 5,不关闭stdout,因此python缓冲区仍在等待更多数据.
请改用:
for line in iter(sys.stdin.readline, ""):
print line
Run Code Online (Sandbox Code Playgroud)