ホームページ  >  記事  >  バックエンド開発  >  スクリプトの応答性を高めるために sys.stdin バッファ サイズを最適化する方法

スクリプトの応答性を高めるために sys.stdin バッファ サイズを最適化する方法

Susan Sarandon
Susan Sarandonオリジナル
2024-10-21 10:33:02609ブラウズ

How to Optimize sys.stdin Buffer Size for Enhanced Script Responsiveness

sys.stdin のバッファ サイズの調整: 入力応答性の向上

問題:

memcached 監視スクリプト memtracer の実行時.py (より大きなコマンド シーケンスから stdin をインターセプトする) では、バッファ サイズが約 15 ~ 18K であるため、スクリプトは入力を受信する際に遅延が発生します。

質問:

sys.stdin のバッファ サイズを最小限に抑えてスクリプトの応答性を高めるにはどうすればよいですか?

答え:

Python には、stdin バッファリングを最適化するための 2 つの効果的な方法が用意されています。

-u フラグの使用:

  • -u フラグは、stdin/stdout と stderr の両方のバッファリングを解除し、遅延なく直接読み取りおよび書き込みを保証します。
<code class="bash">python3 -u memtracer.py</code>

os.fdopen を利用する:

  • あるいは、sys.stdin と同じ基礎となるファイル記述子を共有するが、バッファリングがカスタマイズされた新しいファイル オブジェクトを作成することもできます。 .
<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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。