Python 非常缓慢地将输出释放到 tee



我正在运行这样的命令:

python mycode.py | tee foobar.log 

这段代码对 stdout 做了很多"打印",没有管道,我可以立即看到一些输出。然而,对于管道和三通,我需要很长时间才能看到第一个输出,然后有很多输出。看起来有些缓冲区正在等待填充,只有当它已满时,它才会立即转储所有内容。我不确定是tee,python还是ubuntu问题。例如,ipython也会出现同样的问题。怎么办?

谢谢!

python -u mycode.py | tee foobar.log

-u表示无缓冲的标准输入/输出。不过,请检查手册页。它在 Python2 中有一个轻微的捕获(也将标准 I/O 置于二进制模式,这在 Ubuntu 中没有区别)和在 Python3 中有一个不同的轻微捕获(文本级 I/O 仍然是行缓冲的,所以如果你的输出不包含很多换行符,你仍然可以看到显着的缓冲)。

最新更新