首頁 >後端開發 >Python教學 >如何在Python中強制立即終端輸出?

如何在Python中強制立即終端輸出?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-13 12:44:02208瀏覽

How to Force Immediate Terminal Output in Python?

使用 Python 實現持久終端輸出

在 Python 中,存在一個問題:如果沒有存在換行符。發生這種情況是由於輸出緩衝,輸出會暫時儲存以提高效能。

發生了什麼事?

預設情況下,終端將輸出分成幾行。如果一行結束時沒有換行符,則輸出將保留在緩衝區中直至完成。因此,當 print 語句後面沒有換行符號時,直到循環或程式終止時才會顯示輸出。

修正問題

For單次列印:

在 Python 3 中, print 函數接受一個flush參數。將其設為True 會強制立即顯示輸出:

import time

for _ in range(10):
    print('.', end=' ', flush=True)
    time.sleep(.2)  # or other time-consuming work

在Python 2 中,print 是語句,使用標準輸出流(sys.stdout) 的刷新方法:

import time

for _ in range(10):
    print '.',
    sys.stdout.flush()
    time.sleep(.2)  # or other time-consuming work

對於多次列印:

您可以完全停用輸出行緩衝,以便更有效地處理多次列印,而不是在每次列印後刷新。有幾種解決方案:

  • 使用 print(file=sys.stderr) 將輸出重定向到標準錯誤,該錯誤不被緩衝。
  • 使用 sys.stdout.writelines 和列表一次輸出所有列印語句。
  • 安裝無緩衝包並利用其 Unbuffered 類別建立無緩衝 stdout 流。

以上是如何在Python中強制立即終端輸出?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn