いくつかのメッセージを印刷するためにPythonでいくつかのプログラムを書いた。プログラムがバックグラウンドに移動し、そのメッセージをファイルに印刷したいと思います。だから私はbashに次のように書きましたpython program > message &
:問題:プログラムを中断したときにのみ(catまたはviを使用)メッセージが表示されます。問題が何であるか、簡単な解決策があるかどうかを説明できる人はいますか?
答え1
Pythonの出力がttyでない場合は、完全なバッファリングを使用します。
-- を使用してプログラムを実行すると、python -u
python3のstdoutとstderrとpython2のstdinがバッファリングされなくなります。
これはバックグラウンドで実行されるプログラムとは関係がなく、むしろプログラムのstdoutがttyではないことに注意してください。
答え2
フラッシングは役に立ちますか?他のサイトへのリンクが問題にならないことを願っています。バラよりhttps://stackoverflow.com/questions/230751/how-to-flush-output-of-print-function