首頁 >後端開發 >Python教學 >如何在 Python 中停用 sys.stdout 的輸出緩衝?

如何在 Python 中停用 sys.stdout 的輸出緩衝?

Barbara Streisand
Barbara Streisand原創
2024-12-27 09:49:09943瀏覽

How Can I Disable Output Buffering for sys.stdout in Python?

在Python 解釋器中停用sys.stdout 的輸出緩衝

Python 解釋器預設為sys.stdout(類似檔案)啟用輸出緩衝接受標準的物件輸出。

停用緩衝方法:

要停用輸出緩衝,有幾種方法:

  • 命令列開關:
python -u [script.py]
  • sys.stdout的包裝類:
class Unbuffered(object):
    def __init__(self, stream):
        self.stream = stream
    def write(self, data):
        self.stream.write(data)
        self.stream.flush()
    def writelines(self, datas):
        self.stream.writelines(datas)
        self.stream.flush()
    def __getattr__(self, attr):
        return getattr(self.stream, attr)

import sys
sys.stdout = Unbuffered(sys.stdout)
  • PYTHONUNBUFFERED環境變數:

將此變數設為非空值會停用緩衝:

export PYTHONUNBUFFERED=1
  • 變更sys.stdout 檔案描述符:

此方法涉及打開一個新的文件描述符沒有緩衝:

import os
sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)

此外,正如問題中提到的,可以在執行期間以編程方式設置全局標誌。然而,似乎沒有一個顯式的全域標誌來禁用輸出緩衝。

以上是如何在 Python 中停用 sys.stdout 的輸出緩衝?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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