Dans le but de retrouver les get et sets inégalés pour les clés à l'échelle de la plate-forme, une commande Bash est exécutée :
<code class="bash">memcached -vv 2>&1 | tee memkeywatch2010098.log 2>&1 | ~/bin/memtracer.py | tee memkeywatchCounts20100908.log</code>
Le script memtracer, utilisant stdin, connaît un retard notable dans le traitement en raison de la taille du tampon de stdin. Plus précisément, memtracer.py lance le traitement des entrées uniquement lorsque la taille du fichier journal intermédiaire, memkeywatchYMD.log, dépasse 15-18 Ko.
Pour résoudre le problème , python fournit une méthode efficace pour supprimer complètement la mise en mémoire tampon de stdin et stdout, permettant un traitement immédiat des données entrantes. En utilisant l'indicateur -u, vous pouvez éliminer la limitation de la taille du tampon et améliorer considérablement le temps de réponse de votre script.
<code class="bash">python -u memkeywatchCounts20100908.log</code>
Alternativement, si vous supprimez la mémoire tampon à l'aide de - Si l'indicateur u ne répond pas à vos besoins spécifiques, vous pouvez modifier la mise en mémoire tampon d'un objet fichier existant à l'aide de os.fdopen. Cette approche vous permet de créer un nouvel objet fichier avec le même descripteur de fichier sous-jacent qu'un objet existant, mais avec une mise en mémoire tampon différente. Par exemple :
<code class="python">import os import sys newin = os.fdopen(sys.stdin.fileno(), 'r', 100)</code>
Avec cette modification, newin est lié à un objet fichier qui lit le même descripteur de fichier que l'entrée standard, mais avec une taille de tampon de seulement 100 octets. Cette approche offre un contrôle plus granulaire sur le comportement de la mise en mémoire tampon, mais nécessite des tests supplémentaires pour la compatibilité multiplateforme.
Les opérations stdin ou stdout sans tampon peuvent réduire considérablement la latence et améliorer les performances, en particulier lors du traitement continu de gros volumes de données. Cependant, sachez que la suppression de la mise en mémoire tampon peut également introduire d'autres défis, tels qu'une augmentation des appels système et des interactions avec le noyau, qui peuvent devoir être résolus dans des cas d'utilisation 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!