Pourquoi mon script Python ne s'imprime-t-il pas immédiatement ?

DDD
Libérer: 2024-11-11 08:01:03
original
1011 Les gens l'ont consulté

Why is My Python Script Not Printing Immediately?

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)
Copier après la connexion

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()
Copier après la connexion

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
Copier après la connexion

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')
Copier après la connexion

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal