我正在閱讀關於python中的std.flush()。我發現這個例子很多。Python:爲什麼這個打印自動刷新到屏幕沒有flush()?
import sys,time
for i in range(10):
print i,
#sys.stdout.flush()
time.sleep(1)
人們經常說,它與/沒有「sys.stdout.flush()」有區別。 但是,當我從命令提示符調用此腳本時,它在我的情況中沒有任何區別。這兩個實時打印的數字到屏幕上。 我在窗口中使用python 2.7.5。
這是爲什麼發生?
p.s.在另一個通過subprocess.PIPE而不是直接在屏幕上打印輸出的例子中,我確實觀察到了緩衝區的不同。
我錯過了什麼?
可能有答案來解釋你所看到的,但是......有沒有你想要解決的具體問題,還是這種思想上的好奇心? – dkamins 2014-11-24 02:45:36
您的操作系統最終將決定何時刷新。調用'flush'只是一種保證輸出緩衝區在特定時刻被刷新的方式,但即使沒有明確調用flush也可能被操作系統自動刷新。 – Doorknob 2014-11-24 02:46:22
@dkamins你發現了我..這是出於好奇心,最初從一個真正的問題,我以某種方式解決但不知道如何。經過一些更多的閱讀和試驗後,我在這裏。 – enchy 2014-11-24 03:38:12