3 回答
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()行中刪除注釋以查看區別。
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:?$
添加回答
舉報
