在speaker.py,我print用来输出文本STDOUT:
import time
while True:
time.sleep(1)
print("hello")
Run Code Online (Sandbox Code Playgroud)
在listener.py,我input用来读取STDIN:
while True:
line = input()
if not line:
break
print(line)
Run Code Online (Sandbox Code Playgroud)
我正在尝试用管道连接这两个脚本:
python speaker.py | python listener.py
但listner.py没有输出.
怎么了?
没有什么是错的,但你碰到了缓冲.拿出来sleep,你应该立即看到输出.
http://mywiki.wooledge.org/BashFAQ/009名义上是一个Bash问题,但适用于任何Unix类型的I/O,并彻底解释了这些问题.
小智 5
Andrea提到的重新打开stdout的替代方法是使用-u选项以无缓冲模式启动Python:
python -u speaker.py | python -u listener.py
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
120 次 |
| 最近记录: |