是什么sys.stdout.flush()
吗?
Answer 1:
Python的标准输出缓存(这意味着它收集一些“书面”标准出来的数据就其写入到终端之前)。 调用sys.stdout.flush()
迫使它“刷新”缓存,这意味着它会在缓冲到终端写的一切,即使通常会在这样做之前等待。
下面是关于一些有用的信息缓冲I / O以及它为什么有用(UN):
http://en.wikipedia.org/wiki/Data_buffer
缓冲VS无缓冲IO
Answer 2:
考虑以下简单的Python脚本:
import time
import sys
for i in range(5):
print(i),
#sys.stdout.flush()
time.sleep(1)
这是为了打印一个数每秒五秒钟,但如果你运行它,因为它是现在(取决于默认的系统缓存),你可能看不到任何输出,直到脚本完成,然后一下子你会看到0 1 2 3 4
打印在屏幕上。
这是因为输出被缓冲,除非你刷新sys.stdout
每个之后print
你不会立即看到输出。 从删除注释sys.stdout.flush()
线看出区别。
Answer 3:
按我的理解,当我们过执行打印报表输出将被写入缓冲。 我们会看到屏幕上的输出,当缓冲就脸红(清除)。 默认情况下,缓冲区将程序退出时被刷新。 但我们也可以通过在程序中使用“sys.stdout.flush()”语句刷新缓冲区手动。 在下面的代码缓冲器时,我的值达到5将被刷新。
您可以通过执行以下代码理解。
藏羚羊在线@:〜$猫flush.py
import time
import sys
for i in range(10):
print i
if i == 5:
print "Flushing buffer"
sys.stdout.flush()
time.sleep(1)
for i in range(10):
print i,
if i == 5:
print "Flushing buffer"
sys.stdout.flush()
藏羚羊在线@:〜$
*****输出*****
藏羚羊@在线:〜$蟒蛇flush.py
0 1 2 3 4 5 Flushing buffer
6 7 8 9 0 1 2 3 4 5 Flushing buffer
6 7 8 9
藏羚羊在线@:〜$
Answer 4:
按我的理解sys.stdout.flush()推了所有已缓冲到该点到一个文件对象的数据。 当使用标准输出,数据被存储在缓冲存储器中(在一段时间或者直到存储器被填充的)它被写入到终端之前。 在使用冲洗()的力以清空缓冲器和写入终端缓冲器具有空的空间,即使之前。
Answer 5:
import sys
for x in range(10000):
print "HAPPY >> %s <<\r" % str(x),
sys.stdout.flush()
文章来源: Usage of sys.stdout.flush() method