指定されたコマンド パターンで memcached を実行すると、memtracer にかなりの時間がかかります。 py スクリプトを使用して入力の受信を開始します。これは、sys.stdin のバッファ サイズが大きいことが原因であり、目的の操作には最適ではありません。この記事では、バッファなし入出力と os.fdopen の使用を含む、この問題に対処する 2 つの方法について説明します。
Python には、stdin/ からバッファリングを削除する便利なオプションが用意されています。 -u フラグを使用して stdout を完全に出力します。これは、コマンドの実行時に指定できます:
<code class="bash">memcached -vv 2>&1 | tee memkeywatch2010098.log 2>&1 | ~/bin/memtracer.py | tee memkeywatchCounts20100908.log -u</code>
または、既存のものと同じファイル記述子を持つ新しいファイル オブジェクトを作成することもできます。バッファリングを変更して。これには、os.fdopen 関数の使用が含まれます。
<code class="python">import os import sys newin = os.fdopen(sys.stdin.fileno(), 'r', 100)</code>
これにより、標準入力 (sys.stdin) と同じファイル記述子から読み取る新しいファイル オブジェクト newin が作成されますが、バッファ サイズは 1 です。 100バイト。その後、newin を標準入力オブジェクトとして使用できます。
-u フラグと os.fdopen はどちらも、sys.stdin のバッファリングを削減する効果的な方法を提供します。 -u フラグはバッファリングを完全に削除しますが、os.fdopen はカスタム バッファ サイズをより柔軟に設定できます。さまざまなプラットフォームとの互換性を確保し、特定のパフォーマンス要件を満たすために、これらのアプローチを徹底的にテストすることが重要です。
以上が入力処理を最適化するために sys.stdin のバッファ サイズを削減するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。