sys.stdout.flush() 方法的使用

新手上路,请多包涵

sys.stdout.flush() 是做什么的?

原文由 I159 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

Python 的标准输出是缓冲的(这意味着它会在将数据写入终端之前收集一些“写入”到标准输出的数据)。调用 sys.stdout.flush() 强制它“刷新”缓冲区,这意味着它会将缓冲区中的所有内容写入终端,即使通常它会在这样做之前等待。

以下是有关(非)缓冲 I/O 及其有用原因的一些有用信息:

http://en.wikipedia.org/wiki/Data_buffer

缓冲与非缓冲 IO

原文由 Haldean Brown 发布,翻译遵循 CC BY-SA 3.0 许可协议

考虑以下简单的 Python 脚本:

 import time
import sys

for i in range(5):
    print(i),
    #sys.stdout.flush()
    time.sleep(1)

这被设计为每秒打印一个数字,持续五秒钟,但如果你现在运行它(取决于你的默认系统缓冲),你可能在脚本完成之前看不到任何输出,然后你会立即看到 0 1 2 3 4 打印到屏幕上。

这是因为输出正在被缓冲,除非您在每个 print sys.stdout ,否则您不会立即看到输出。从 sys.stdout.flush() 行中删除注释以查看差异。

原文由 Andrew Clark 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏