【发布时间】:2012-01-15 00:56:36
【问题描述】:
下面的缓冲区在哪里...以及如何关闭它?
我正在像这样的 python 程序中写出到标准输出:
for line in sys.stdin:
print line
这里有一些缓冲:
tail -f data.txt | grep -e APL | python -u Interpret.py
我尝试了以下方法来摆脱可能的缓冲......但没有运气:
- 如上使用带有 python 调用的 -u 标志
- 在每次 sys.stdout.write() 调用后调用 sys.stdout.flush() ...所有这些都创建了一个缓冲流,python 等待大约一分钟才能打印出前几行。
-
使用了以下修改后的命令:
stdbuf -o0 tail -f data.txt | stdbuf -o0 -i0 grep -e APL | stdbuf -i0 -o0 python -u Interpret.py
为了衡量我的期望,我尝试了:
tail -f data.txt | grep -e APL
这会产生稳定的行流......它肯定不像 python 命令那样缓冲。
那么,如何关闭缓冲? ANSWER: 原来管道的两端都有缓冲。
【问题讨论】:
-
我希望它是重复的。那里提到的解决方案都不适用于我的情况。
标签: python linux bash buffering