猿问

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

怎么sys.stdout.flush()办?



慕标琳琳
浏览 4852回答 3
3回答

慕的地10843

考虑以下简单的Python脚本:import timeimport sysfor i in range(5):    print(i),    #sys.stdout.flush()    time.sleep(1)这是为了打印每秒五秒钟一个号码,你要是跑不过它,因为它是现在(取决于默认的系统缓存),你可能看不到任何输出,直到脚本完成,然后一下子你会看到0 1 2 3 4印到屏幕。这是因为输出正在缓冲中,除非sys.stdout每次刷新后print您都不会立即看到输出。从sys.stdout.flush()行中删除注释以查看区别。

肥皂起泡泡

根据我的理解,无论何时执行打印语句,输出都会写入缓冲区。当缓冲区被刷新(清除)时,我们将在屏幕上看到输出。默认情况下,程序退出时将刷新缓冲区。但是我们也可以通过在程序中使用“ sys.stdout.flush()”语句来手动刷新缓冲区。在下面的代码中,当i的值达到5时,将刷新代码缓冲区。您可以通过执行以下代码来理解。chiru @ online:〜$ cat flush.pyimport timeimport sysfor 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.py0 1 2 3 4 5 Flushing buffer6 7 8 9 0 1 2 3 4 5 Flushing buffer6 7 8 9chiru @ online:〜$
随时随地看视频慕课网APP

相关分类

Python
我要回答