問題:
memcached 監視スクリプト memtracer の実行時.py (より大きなコマンド シーケンスから stdin をインターセプトする) では、バッファ サイズが約 15 ~ 18K であるため、スクリプトは入力を受信する際に遅延が発生します。
質問:
sys.stdin のバッファ サイズを最小限に抑えてスクリプトの応答性を高めるにはどうすればよいですか?
答え:
Python には、stdin バッファリングを最適化するための 2 つの効果的な方法が用意されています。
-u フラグの使用:
<code class="bash">python3 -u memtracer.py</code>
os.fdopen を利用する:
<code class="python">import os newin = os.fdopen(sys.stdin.fileno(), 'r', 100) sys.stdin = newin # This makes newin the standard input from here onwards</code>
この例では、newin は、標準入力と同じ FD から読み取るファイル オブジェクトにバインドされていますが、バッファ サイズは 100 バイトと小さいです。
注os.fdopen の使用には、プラットフォーム固有の問題や制限がある可能性があるため、注意が必要です。関連するすべてのプラットフォームで徹底的なテストを行うことをお勧めします。
これらの方法のいずれかを実装すると、sys.stdin のバッファ サイズが大幅に削減され、memtracer.py スクリプトが memcached 内の入力変更により迅速に反応できるようになります。監視シナリオ
以上がスクリプトの応答性を高めるために sys.stdin バッファ サイズを最適化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。