Maison  >  Article  >  développement back-end  >  Comment réduire la taille du tampon pour sys.stdin ?

Comment réduire la taille du tampon pour sys.stdin ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-21 10:38:29615parcourir

How to Reduce Buffer Size for sys.stdin?

Comment réduire la taille du tampon pour sys.stdin

Lors de l'exécution de la commande :

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

il a été observé que memtracer.py ne commence pas à recevoir des entrées tant que memkeywatchYMD.log n'a pas dépassé la taille de 15 à 18 Ko. Pour résoudre ce problème, il existe deux approches :

Utilisation de l'indicateur sans tampon (-u)

Python fournit un indicateur sans tampon -u qui supprime la mise en mémoire tampon de stdin/stdout. En appelant Python avec cet indicateur :

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

vous pouvez éliminer complètement la mise en mémoire tampon pour stdin et stdout.

Création d'un nouvel objet fichier avec une mise en mémoire tampon différente

Vous pouvez également créer un nouvel objet fichier avec le même descripteur de fichier sous-jacent que l'entrée standard mais avec une taille de tampon plus petite. Ceci peut être réalisé en utilisant 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>

Ce code devrait vous permettre de lire à partir d'une entrée standard avec une taille de tampon de seulement 100 octets, ce qui entraîne des temps de réponse plus rapides. Notez que cette approche peut avoir des limitations spécifiques à la plate-forme, des tests approfondis sont donc recommandés.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn