私はPythonの問題を抱えています。私はRed Hat Enterprise Linux Serverリリース7.1(Maipo)でPython 2.7.13とPython 3.6.0を使用しました。処理の出力を監視するために、tail -f
を使用して、STDOUTとSTDERRをライブビューします。ここのキーワードはバッファリングされていない出力です。インターネット上の多くの提案はpython -u ...
またはPYTHONUNBUFFERED=1 python ...
またはstdbuf -e0 -o0 python ...
のような環境変数PYTHONUNBUFFEREDを使用しています。それにもかかわらず、次のテストスクリプトでは何も起きていません。Pythonがバッファされていないモードで動作していません
import sys
import time
while(True):
print("Test String")
time.sleep(1);
私はいつもバッファリングされた出力を持っています。私がSTDERRを使いたいときでも。 STDERRはデフォルトでバッファリングされていないので、私は本当に混乱しています。 sys.stdout.flush()
またはsys.stderr.flush()
を使用してもジョブを実行していません。 print()
の中にflush=True
を使用すると、意図したとおりに動作しています。
私はコードを編集する必要がないソリューションを探しています。私はすべてのプログラムを編集してバッファリングされずにすぐに出力をフラッシュすることができないからです。どうすればこれを達成できますか?
あなたの答えを楽しみにしています!
最高の願い!
は、あなたのテストスクリプトは、何を期待していますか? –
'print(flush = True)'関数をオーバーライドできます。 –
私の元のスクリプトには、監視したいディープ学習とニューラルネットワークのステップがいくつか出力されています。私のテストスクリプトでは、出力がバッファリングされていないかどうかを調べるため、ダミー出力に絞り込んだ。 @ElisByberiのために私はコードを編集する必要があります。いくつかのプログラムは非常に巨大なので、すべてを編集することが混乱で終わるでしょう。私は何か 'python -u'や' PYTHONUNBUFFERED'を探しています。代わりに、彼らは働いています。広告されたとおりに動作しません。 – TheOrangeman