pythonコマンドの-uパラメーターの詳細な説明

原点:

今日は、arcfaceのトレーニングコードを見ていました。shell[script](https://www.zalou.cn/tag/jiaoben)でpythonコマンドを実行した後、-uパラメーター(python -u xx.py)を追加したので、このパラメーターについて少し調べました。

知識を準備する

インターネット上の[program](https://www.zalou.cn/tag/chengxu)の例を使用して、pythonでの標準エラー(std.err)と標準出力(std.out)の出力ルールを示します(標準出力は画面に出力する前にデフォルトでキャッシュする必要がありますが、標準エラーは画面に直接印刷):

import sys
 
sys.stdout.write("stdout1")
sys.stderr.write("stderr1")
sys.stdout.write("stdout2")
sys.stderr.write("stderr2")

その中で、sys.stdout.write()とsys.stderr.write()は、画面に出力するステートメントです。実際、pythonのprintステートメントはsys.stdout.write()を呼び出します。たとえば、printオブジェクトがprint objを呼び出すと、実際にはsys.stdout.write(obj + 'n')が呼び出されます。

期待される結果は

stdout1stderr1stdout2stderr2

実際の結果はです

stderr1stderr2stdout1stdout2

その理由は、pythonキャッシュメカニズムです。デフォルトでは、stderrとstdoutの両方が画面を指しますが、stderrはキャッシュされません。[プログラム](https://www.zalou.cn/tag/chengxu)はstderrに文字を出力し、stdoutがキャッシュされている間、1文字が画面に表示されます。 、改行が発生した場合、または一定のサイズに蓄積された場合にのみ表示されます。これが、上記で最初に2つのstderrが表示される理由です。

- uパラメータの使用

上記の予兆を使用して、pythonの-uパラメーターを導出できます。 pythonコマンドと-u(バッファなし)パラメータは、標準エラーと同様に、標準出力をバッファリングせずに画面に直接出力するように強制します。

運用結果

stdout1stderr1stdout2stderr2

これが期待される出力になります。

**注:**上記の結果はpython2で実装されています。また、python3でもテストしました。Python3で-uまたは環境変数UNBUFFERED = 1を使用しても、stdoutはキャッシュを書き込みます(実行結果stderr1stderr2stdout1stdout2)、具体的な理由は定かではありませんので、確認の上更新させていただきます。

上記の分析から、特にpython実行[script](https://www.zalou.cn/tag/jiaoben)が画面に出力され、結果がログファイルに直接リダイレクトされる場合、-uパラメータが使用されるため、標準の出力結果が直接に出力されることを確認するのは難しくありません。ログファイル。

pythonコマンドの-uパラメーターの上記の詳細な説明は、エディターによって共有されるコンテンツ全体です。参照を提供したいと思います。[website](https://www.zalou.cn/tag/wangzhan)(zalou.cn)をサポートできることを願っています。

あなたが興味を持っているかもしれない記事:####

Recommended Posts

pythonコマンドの-uパラメーターの詳細な説明
Python関数パラメータ分類の原理の詳細な説明
pythonバックトラッキングテンプレートの詳細な説明
pythonシーケンスタイプの詳細な説明
PythonIOポート多重化の詳細な説明
Python推測アルゴリズムの問題の詳細な説明
Python super()メソッドの原理の詳細な説明
python標準ライブラリOSモジュールの詳細な説明
Pythondecimalモジュールの使用法の詳細な説明
pythonがコンカレントメソッドをサポートする方法の詳細な説明
Pythonに基づくデータタイプの詳細な説明
Pythonタイマースレッドプールの原理の詳細な説明
Pythonインターフェース開発の実装手順の詳細な説明
Pythonプロセス制御の一般的なツールの詳細な説明
PythonWebページパーサーの使用例の詳細な説明
Pythonオブジェクトの属性アクセスプロセスの詳細な説明
pythonに基づく残りの問題の詳細な説明(%)
パラメータを渡すPythonメソッド
Pythonプラグインメカニズムの詳細な実装
gpg2を使用したubuntuの詳細な説明
Python関数の定義とパラメーターの説明
Pythonエラー処理は詳細な説明を主張します
Pythonでの辞書の詳細な使用法
Pythonガベージコレクションメカニズムの詳細な分析
属性からプロパティまでのPython詳細な説明
Pythonでのpipの使用に関する詳細な説明|サードパーティライブラリのインストールの概要
Ubuntu20.04インストールPython3仮想環境チュートリアル詳細な説明
Python3.9の7つの機能
CentOS6.5でのHadoop環境の構築に関する詳細な説明
Pythonを使用してKSを計算する詳細な例
Ubuntuでの静的DNS構成方法の詳細な説明
Centos7システム仮想マシンブリッジングモードの詳細な説明
Ubuntuシステムでの静的DNS構成の詳細な説明
同等の保険評価:Centosタイムアウト終了の詳細な説明
vmwareでのCentOS7ネットワーク設定チュートリアルの詳細な説明
詳細なPythonIOプログラミング
詳細なPythonループのネスト
Python構文の基本
Pythonの基本構文
Python-モジュールの詳細な説明を要求します
pythonのPrettytableモジュール
09.Python3の共通モジュール
centOS7でのSparkのインストールと構成のチュートリアルの詳細な説明