Maison > développement back-end > Tutoriel Python > Pourquoi la sortie d'impression n'apparaît-elle pas immédiatement dans le terminal sans nouvelle ligne ?

Pourquoi la sortie d'impression n'apparaît-elle pas immédiatement dans le terminal sans nouvelle ligne ?

Linda Hamilton
Libérer: 2024-11-11 19:33:03
original
475 Les gens l'ont consulté

Why Doesn't Print Output Appear Immediately in the Terminal Without a Newline?

Pourquoi la sortie d'impression n'apparaît-elle pas immédiatement dans le terminal sans nouvelle ligne ?

Le comportement par défaut de Python est de mettre la sortie en mémoire tampon, ce qui signifie qu'il stocke le texte dans un espace temporaire avant de l'envoyer au terminal. Ceci est fait pour améliorer les performances en réduisant le nombre d'appels système nécessaires.

Le problème

Lorsqu'aucune nouvelle ligne (n) n'est incluse à la fin d'un instruction d'impression ou appel de fonction, le texte est conservé dans le tampon. Ce n'est que lorsqu'une nouvelle ligne est rencontrée ou que le tampon est plein que le texte est vidé et affiché dans le terminal.

Différences Python 2.x et 3.x

Dans Python 2.x, l'instruction print n'a pas d'argument flush. Pour vider le tampon sans ajouter de nouvelle ligne, l'approche suivante peut être utilisée :

import sys

for i in range(10):
    print '.',
    sys.stdout.flush()
Copier après la connexion

Dans Python 3.x, la fonction d'impression inclut un argument de mot-clé flush :

for i in range(10):
    print('.', end=' ', flush=True)
Copier après la connexion

< ;h3>Désactivation de la mise en mémoire tampon de ligne

Pour les scénarios dans lesquels une impression immédiate est souhaitée quelle que soit la présence d'une nouvelle ligne, la mise en mémoire tampon de ligne peut être complètement désactivée. Ceci peut être réalisé en utilisant :

  • sys.stdout.line_buffering = True pour Python 2.x
  • print(flush=True) pour Python 3.x

En désactivant la mise en mémoire tampon, tous les appels d'impression seront affichés immédiatement dans le terminal sans nécessiter de nouvelle ligne ou de vidage explicite.

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