Maison > développement back-end > Tutoriel Python > Comment forcer la sortie immédiate du terminal en Python ?

Comment forcer la sortie immédiate du terminal en Python ?

Mary-Kate Olsen
Libérer: 2024-11-13 12:44:02
original
215 Les gens l'ont consulté

How to Force Immediate Terminal Output in Python?

Sortie de terminal persistante avec Python

En Python, il existe un problème où les sorties d'impression peuvent ne pas apparaître immédiatement dans le terminal s'il n'y a pas de nouvelle ligne présente. Cela se produit en raison de la mise en mémoire tampon de sortie, où la sortie est temporairement stockée pour améliorer les performances.

Que se passe-t-il ?

Par défaut, le terminal divise la sortie en lignes. Si une ligne se termine sans caractère de nouvelle ligne, la sortie reste dans un tampon jusqu'à ce qu'elle soit terminée. Par conséquent, lorsqu'il n'y a pas de nouvelle ligne après une instruction print, la sortie n'est pas affichée jusqu'à la fin de la boucle ou du programme.

Résoudre le problème

Pour Impressions simples :

Dans Python 3, la fonction d'impression accepte un argument flush. Le définir sur True force l'affichage immédiat de la sortie :

import time

for _ in range(10):
    print('.', end=' ', flush=True)
    time.sleep(.2)  # or other time-consuming work
Copier après la connexion

Dans Python 2, où print est une instruction, utilisez la méthode flush du flux de sortie standard (sys.stdout) :

import time

for _ in range(10):
    print '.',
    sys.stdout.flush()
    time.sleep(.2)  # or other time-consuming work
Copier après la connexion

Pour plusieurs impressions :

Au lieu de vider après chaque impression, vous pouvez désactiver complètement la mise en mémoire tampon de la ligne de sortie pour une gestion plus efficace de plusieurs impressions. Plusieurs solutions sont disponibles :

  • Utilisez print(file=sys.stderr) pour rediriger la sortie vers l'erreur standard, qui n'est pas mise en mémoire tampon.
  • Utilisez sys.stdout.writelines avec une liste de toutes les instructions d'impression pour les afficher en une seule fois.
  • Installez le package sans tampon et utilisez sa classe Unbuffered pour créer un flux de sortie standard sans tampon.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal