ホームページ  >  記事  >  バックエンド開発  >  sys.stdin のバッファ サイズを減らすにはどうすればよいですか?

sys.stdin のバッファ サイズを減らすにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-21 10:38:29722ブラウズ

How to Reduce Buffer Size for sys.stdin?

sys.stdin のバッファ サイズを減らす方法

コマンドを実行すると、

<code class="bash">memcached -vv 2>&1 | tee memkeywatch2010098.log 2>&1 | ~/bin/memtracer.py | tee memkeywatchCounts20100908.log</code>

が観察されました。 memtracer.py は、memkeywatchYMD.log のサイズが 15 ~ 18K を超えるまで入力の受信を開始しません。これに対処するには、2 つのアプローチがあります。

バッファリングされていないフラグ (-u) を使用する

Python には、stdin/stdout からバッファリングを削除するバッファリングされていないフラグ -u が用意されています。このフラグを使用して Python を呼び出すと:

<code class="bash">python -u ~/bin/memtracer.py</code>

標準入力と標準出力のバッファリングを完全に削除できます。

異なるバッファリングを使用して新しいファイル オブジェクトを作成します

標準入力と同じ基礎となるファイル記述子を使用して、より小さいバッファ サイズで新しいファイル オブジェクトを作成することもできます。これは、os.fdopen:

<code class="python">import os
import sys

# Create a new file object with a buffer size of 100 bytes
newin = os.fdopen(sys.stdin.fileno(), 'r', 100)

# Assign the new file object to standard input
sys.stdin = newin</code>

を使用して実現できます。このコードにより、わずか 100 バイトのバッファ サイズで標準入力から読み取ることができるため、応答時間が短縮されます。このアプローチにはプラットフォーム固有の制限がある可能性があるため、徹底的なテストを行うことをお勧めします。

以上がsys.stdin のバッファ サイズを減らすにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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