Lors de l'exécution de memcached avec le modèle de commande donné, cela prend un temps considérable pour le memtracer. py pour commencer à recevoir des entrées. Cela est attribué à la grande taille du tampon de sys.stdin, qui n'est pas optimale pour l'opération souhaitée. Cet article explore deux méthodes pour résoudre ce problème, notamment les entrées/sorties sans tampon et l'utilisation de os.fdopen.
Python fournit une option pratique pour supprimer la mise en mémoire tampon de stdin/ stdout en utilisant complètement l'indicateur -u. Cela peut être spécifié 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 -u</code>
Vous pouvez également créer un nouvel objet fichier avec le même descripteur de fichier qu'un objet existant, mais avec une mise en mémoire tampon modifiée. Cela implique d'utiliser la fonction os.fdopen :
<code class="python">import os import sys newin = os.fdopen(sys.stdin.fileno(), 'r', 100)</code>
Cela crée un nouvel objet fichier, newin, qui lit à partir du même descripteur de fichier que l'entrée standard (sys.stdin), mais avec une taille de tampon de seulement 100 octets. Vous pouvez ensuite utiliser newin comme objet d'entrée standard.
L'indicateur -u et os.fdopen offrent des méthodes efficaces pour réduire la mise en mémoire tampon dans sys.stdin. Alors que l'option -u supprime entièrement la mise en mémoire tampon, os.fdopen offre plus de flexibilité dans la définition de tailles de tampon personnalisées. Il est important de tester minutieusement ces approches pour garantir la compatibilité avec les différentes plateformes et répondre aux exigences de performances spécifiques.
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!