我想编写一个程序,可以接受输入管道,操作它,并立即输出。似乎无论我尝试了多少东西(使用stdout.write
而不是print
,明确刷新stdout
,将stdin
设置为无缓冲),输出似乎会延迟直到输入程序关闭。
示例输入脚本:
import sys
import time
sys.stdout.write('1\n')
sys.stdout.flush()
time.sleep(3)
sys.stdout.write('2\n')
sys.stdout.flush()
示例输出脚本:
import sys
import time
for line in sys.stdin:
print time.time()
sys.stdout.write(line)
sys.stdout.flush()
如果我这样做:
python input.py | python output.py
我得到这样的东西:
1428023794.99
1
1428023794.99
2
显然,这些线路正在同时进入第二个节目。我也尝试使用-u
标志运行第二个python脚本到unbuffer stdin,但得到相同的输出。
如何让我的程序从stdin
拉出文本立即输出文本?