3 回答

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超3個(gè)贊
我認(rèn)為您誤解了“刷新輸出緩沖區(qū)”的含義。我不會(huì)刪除以前打印的內(nèi)容。它只是意味著“立即打印,無(wú)需等待整行(或文件價(jià)值)的輸出。”
刷新可能很重要的一個(gè)例子是當(dāng)你在一行中打印出幾件事時(shí),它們之間有一個(gè)延遲:
import time
for i in range(10):
print(i, end="")
time.sleep(1)
在許多控制臺(tái)上,這將在 10 秒內(nèi)不打印任何內(nèi)容,然后您會(huì)0123456789立即看到所有內(nèi)容。但是如果你添加flush=True到print通話中,你會(huì)看到每個(gè)號(hào)碼分別出現(xiàn),一個(gè)接一個(gè),中間有一秒鐘的延遲。你仍然0123456789在一條線上,但它是逐漸建立起來(lái)的。(請(qǐng)注意,某些 IDE 中內(nèi)置的控制臺(tái)可能不會(huì)以真實(shí)終端的正常方式進(jìn)行行緩沖,因此您的里程可能會(huì)有所不同。真實(shí)控制臺(tái)更加一致。)
如果您打印的是末尾帶有換行符的整行(這是 的默認(rèn)設(shè)置print),flush則沒(méi)有必要使用 usually,因?yàn)榇蠖鄶?shù)終端都是行緩沖的。這意味著它們會(huì)在每一行的末尾自動(dòng)刷新自己,即使flush=True在輸出后沒(méi)有明確要求刷新。

TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超9個(gè)贊
嘗試這個(gè):
import time
for shard in range(3):
for i in range(100):
print("image_{} in shard_{}\r".format(i,shard),end = "")
time.sleep(1)
print()

TA貢獻(xiàn)2019條經(jīng)驗(yàn) 獲得超9個(gè)贊
嘗試:
for i in range(3):
print("{}\r".format(i), end="")
print("Hello\r", end="")
print("World\r", end="")
輸出將是World。