Gle*_*emi 8 python stdin unbuffered
我正在编写一个python脚本,可以通过管道从另一个命令中读取输入
batch_job | myparser
Run Code Online (Sandbox Code Playgroud)
我的脚本myparser处理输出batch_job并写入自己的标准输出.我的问题是我想立即看到输出(batch_job的输出是逐行处理的)但似乎有这个臭名昭着的stdin缓冲(据称是4KB,我还没有验证)延迟了一切.
我尝试了以下方法:
os.fdopen(sys.stdin.fileno(), 'r', 0)-u在我hashbang:#!/usr/bin/python -uexport PYTHONUNBUFFERED=1在调用脚本之前进行设置我的python版本是2.4.3 - 我没有可能升级或安装任何其他程序或包.我怎样才能摆脱这些延误?
在Linux,bash中,您正在寻找的似乎是stdbuf命令。
如果你不想缓冲(即无缓冲流),试试这个,
# batch_job | stdbuf -o0 myparser
Run Code Online (Sandbox Code Playgroud)
如果你想要行缓冲,试试这个,
# batch_job | stdbuf -oL myparser
Run Code Online (Sandbox Code Playgroud)