我正在运行这样的命令:
python mycode.py | tee foobar.log
Run Code Online (Sandbox Code Playgroud)
这段代码对stdout进行了很多"打印",没有管道,我可以立即看到一些输出.然而,使用管道和T形管,我需要很长时间才能看到第一个输出,然后有很多.看起来有些缓冲区正在等待填充,只有当它已满时,它才会立即转储所有内容.我不确定它是tee,python还是ubuntu问题.例如,ipython也会出现同样的问题.该怎么办?
谢谢!
python -u mycode.py | tee foobar.log
Run Code Online (Sandbox Code Playgroud)
-u表示无缓冲的标准输入/输出.不过,请查看手册页.它在Python2中有一个轻微的捕获(也将标准I/O置于二进制模式,这在Ubuntu中没有区别)和Python3中的不同轻微捕获(文本级I/O仍然是行缓冲的,所以如果你的输出没有'包含许多换行符,你仍然可以看到重要的缓冲).
| 归档时间: |
|
| 查看次数: |
462 次 |
| 最近记录: |