一部のPythonコードで、Pythonインタープリターを起動するために-uが使用されていることに気づきました。私はPythonのmanページを見ましたが、それから多くを得ることができませんでした。例をいくつか教えてください。
3 に答える
差出人python --help
:
-u : unbuffered binary stdout and stderr; also PYTHONUNBUFFERED=x see man page for details on internal buffering relating to '-u'
マンページには次のように記載されています。
-u Force stdin, stdout and stderr to be totally unbuffered. On systems where it matters, also put stdin, stdout and stderr in binary mode. Note that there is internal buffering in xreadlines(), readlines() and file-object iterators ("for line in sys.stdin") which is not influenced by this option. To work around this, you will want to use "sys.stdin.readline()" inside a "while 1:" loop.
Pythonは、stdin、-out、および-errorストリームをバッファーモードで開きます。大きなチャンクで読み取りまたは書き込みを行い、しきい値に達するまでデータをメモリに保持します。-u
それらのバッファを無効にします。
また、Pythonは開いているファイルの改行を解釈し、ネイティブプラットフォームの改行(テキストモード)との間でそれらを変換できます。このオプションはこの変換を無効にし、組み合わせ-u
に何が起こるかを心配することなくバイナリデータを処理できるようにします。\r\n
これは、関数でファイルを開くときにrb
またはモードを使用するのと同じです。wb
open()
Pythonは、大量のデータの読み取りと印刷用に最適化されています。これらの最適化の1つは、Pythonインタープリターの標準の入力と出力がバッファーに入れられることです。つまり、プログラムがこれらのストリームの1つを使用しようとすると、解釈されたものは使用を大きなチャンクにブロックし、チャンクを一度に送信します。これは、個々の読み取り/書き込みを個別に送信するよりも高速ですが、データが途中で「停止」する可能性があるという欠点があります。
-uフラグは、この動作をオフにします。
私もこの問題を抱えていて、それをやっていることがわかりました:
sudo systemctl enable myservice.service
問題を修正しました-このスレッドにリストされている他のすべてをチェックしました。これを1回行うだけで、その後の起動ごとにサービスが起動します。私のはPythonスクリプトでもありました