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!