在speaker.py
中,我使用print
将文字输出到STDOUT
:
import time
while True:
time.sleep(1)
print("hello")
在listener.py
中,我使用input
来阅读STDIN
:
while True:
line = input()
if not line:
break
print(line)
我正在尝试用管道连接这两个脚本:
python speaker.py | python listener.py
但是listner.py
没有输出任何内容。
怎么了?
答案 0 :(得分:5)
本身没有任何问题,但你碰到了缓冲。取出sleep
,您应该立即看到输出。
http://mywiki.wooledge.org/BashFAQ/009名义上是一个Bash问题,但适用于任何Unix类型的I / O,并彻底解释了这些问题。
答案 1 :(得分:5)
Andrea提到的重新打开stdout的替代方法是使用-u选项以无缓冲模式启动Python:
python -u speaker.py | python -u listener.py