Tampon de sortie en Python
En Python, la fonction d'impression met par défaut en mémoire tampon la sortie pour améliorer les performances. Cela empêche le terminal d'afficher immédiatement la sortie, ce qui peut être problématique lors du suivi de la progression d'un script.
Pourquoi c'est du buffering
Le terminal est un programme distinct qui communique avec votre script Python. La mise en mémoire tampon réduit la surcharge liée à l'envoi de texte au terminal en le stockant en interne jusqu'à ce qu'un montant spécifique ait été accumulé ou qu'un caractère de nouvelle ligne soit rencontré.
Résoudre le problème
Impression unique immédiate
Pour imprimer immédiatement, vous devez vider explicitement le tampon de sortie. Dans Python 3.x, utilisez l'argument flush dans la fonction print :
for step in steps: run_simulation(step) print('.', end=' ', flush=True)
Dans Python 2.x, appelez la méthode .flush sur le flux de sortie standard :
for step in steps: run_simulation(step) print '.', sys.stdout.flush()
Désactiver la mise en mémoire tampon
Pour désactiver complètement la mise en mémoire tampon de la ligne de sortie, vous pouvez modifier la mémoire tampon taille :
import sys sys.stdout.buffer.write(bytearray('Hello', 'utf-8')) # Use bytearray for Python 3.x sys.stdout.buffer.flush() # Manually flush the buffer as needed
Vous pouvez également utiliser le wrapper sans tampon :
import sys with open(sys.stdout.fileno(), mode='w', buffering=0) as f: # Writes directly to the terminal without buffering f.write('Hello')
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!