タグ

2019年7月26日のブックマーク (2件)

  • rubyで出力のバッファリングをやめる

    rubyで以下のような感じのコードを書きます。 print "xxx" sleep 2 print "yyy" sleep 2 print "zzz" xxxと出てからyyyと出てzzzと出てくるのを期待したりするのですが、このように出力されないで 実際は、しばらく待って一気にxxxyyyzzzと出力されることになります。 これは標準出力する際に、バッファに一時的にためていてある程度たまってから出力しているせいなわけで これを期待するように動かすには、 STDOUT.sync = true print "xxx" sleep 2 print "yyy" sleep 2 print "zzz" のように STDOUT.sync = true を追加すればOKです。 バッファリングされるのは標準出力だけでなく自分で書き込み用に作成したファイルへの書き込みでも同様な感じになります。 動作ログをフ

    babydaemons
    babydaemons 2019/07/26
    “STDOUT.sync = true”
  • パイプで繋いだコマンドの出力をバッファ無しで受け取りたい - mattintosh note

    先日、Raspberry Pi で温度を測定するプログラムを書いたので温度をモニタリングしながらファイルに保存していこうと思ったら画面に何も出てこなかった。すっかり忘れてたけどバッファがあるんだった。 $ python2 temp.py | tee temp.csv 昔は grep --line-buffered みたいなの使ってた気がするけど、他にも無いのかと調べてみたらコマンドのバッファを変更できる stdbuf っていうちゃんとあった。 $ man -s 1 -k buffer dmesg (1) - print or control the kernel ring buffer stdbuf (1) - Run COMMAND, with modified buffering operations for its standard streams. $ stdbuf --help

    パイプで繋いだコマンドの出力をバッファ無しで受け取りたい - mattintosh note