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

2019-05-13 10:34发布

是什么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
标签: python sys