使用 sys.stdout.flush() 方法

13 浏览
0 Comments

使用 sys.stdout.flush() 方法

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

admin 更改状态以发布 2023年5月21日
0
0 Comments

考虑以下简单的Python脚本:\n

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

\n该脚本旨在每秒打印一个数字,持续五秒钟。但如果按照现在的代码运行它(取决于默认的系统缓冲区),您可能在脚本完成之前看不到任何输出,然后您将一次性在屏幕上看到 0 1 2 3 4 打印的结果。\n这是因为输出被缓冲,除非您在每个print之后刷新sys.stdout,否则您将看不到即时输出。取消sys.stdout.flush()行的注释以查看差异。

0
0 Comments

Python的标准输出是缓冲的(这意味着它会收集一些被写入的数据到标准输出之前,然后再写入终端)。调用sys.stdout.flush()函数会强制它"刷新"缓冲区,这意味着它会将缓冲区中的所有内容写入终端,即使通常情况下它会等待再写入。

这里有一些有关(不)缓冲I/O 的好信息:
http://en.wikipedia.org/wiki/Data_buffer
Buffered vs unbuffered IO

0