読者です 読者をやめる 読者になる 読者になる

Memorandum and Diary

2017年はザコい英語力・カスい筋力をどうにかする

python 標準出力のフラッシュ sys.stdout.flush

プログラムが出力したが,OSによってバッファリングされコンソールには実際には出力されてないものをフラッシュ(flush)させる関数.

  • pythonは,標準出力が改行されるタイミングで自動でフラッシュ(flush)させるようになってる.(ただし,パイプで別のプロセスにつながっている場合、バッファリングされる)

よって,

  • 改行をさせない標準出力であるsys.stdout.write()を使用
  • 関数が呼ばれるごとに標準出力されて欲しい

ときはsys.stdout.flush()でflushさせる必要がある.

サンプル

for i in range(10):
    sys.stdout.write(".")
    sys.stdout.flush()
    time.sleep(1)

時間にともなって出力したい時,flushしないとforがすべて終わってプログラムが終わってからすべて出力されることになる.

参考

https://hydrocul.github.io/wiki/programming_languages_diff/io/flush.html