Python のインタープリターでは、出力バッファリングはデフォルトで有効になっていますかsys.stdout
?
答えが「はい」の場合、それを無効にする方法は何ですか?
これまでの提案:
-u
コマンドラインスイッチを使用するsys.stdout
書き込みのたびにフラッシュするオブジェクトでラップするPYTHONUNBUFFERED
環境変数を設定するsys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)
sys
実行中にプログラムでグローバル フラグを設定する他の方法はありますかsys.stdout
?
特定の書き込み後にフラッシュしたい場合はprint
、印刷関数の出力をフラッシュするにはどうすればよいですか?。
ベストアンサー1
python -u
環境変数 PYTHONUNBUFFERED を使用するか設定することで、Python プロセス全体のバッファリングをスキップできます。また、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) print 'Hello'