入力処理を最適化するために sys.stdin のバッファ サイズを削減するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-10-21 13:19:02
オリジナル
645 人が閲覧しました

How to Reduce the Buffer Size of sys.stdin for Optimized Input Handling?

sys.stdin のバッファ サイズを小さく設定する方法?

指定されたコマンド パターンで memcached を実行すると、memtracer にかなりの時間がかかります。 py スクリプトを使用して入力の受信を開始します。これは、sys.stdin のバッファ サイズが大きいことが原因であり、目的の操作には最適ではありません。この記事では、バッファなし入出力と os.fdopen の使用を含む、この問題に対処する 2 つの方法について説明します。

Python -u フラグの使用

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 を使用したバッファリングの変更

または、既存のものと同じファイル記述子を持つ新しいファイル オブジェクトを作成することもできます。バッファリングを変更して。これには、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 サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート