如何解决了解Python3标准输出缓冲到管道
我无法理解为什么代码中的print语句会立即产生输出。
import subprocess
proc = subprocess.Popen(['python3','-i'],stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
_ = proc.stdin.write(b'2+2\n')
_ = proc.stdin.flush()
print(proc.stdout.readline())
# produces b'4\n' immidiately!
proc.terminate()
proc.wait(timeout=0.2)
在将子'python -i'的stdout写入管道时,它是否应该被完全缓冲? 意思是,直到子项终止或子项的stdout缓冲区已满并显式刷新到os之前,我才应该在print语句中看到输出?
有趣的是,在“ enter”之后看到的终端输出上的相同行为。也许'python -i'在'\ n'之后刷新输出?
➜ ~ python3 -i -c 'print("hiiiii")' | cat
>>>
>>> hiiiii
>>> ^D```
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。