为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕标琳琳 2019-11-23 13:21:06
怎么sys.stdout.flush()办?
查看完整描述

3 回答

?
慕的地10843

TA贡献1785条经验 获得超8个赞

考虑以下简单的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()行中删除注释以查看区别。


查看完整回答
反对 回复 2019-11-23
?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

根据我的理解,无论何时执行打印语句,输出都会写入缓冲区。当缓冲区被刷新(清除)时,我们将在屏幕上看到输出。默认情况下,程序退出时将刷新缓冲区。但是我们也可以通过在程序中使用“ sys.stdout.flush()”语句来手动刷新缓冲区。在下面的代码中,当i的值达到5时,将刷新代码缓冲区。


您可以通过执行以下代码来理解。


chiru @ online:〜$ cat 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()

chiru @ online:〜$


*****输出*****


chiru @ online:〜$ python 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

chiru @ online:〜$


查看完整回答
反对 回复 2019-11-23
  • 3 回答
  • 0 关注
  • 4765 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信