亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 4936 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號