Maison  >  Article  >  développement back-end  >  Pourquoi ma sortie Python est-elle retardée et comment puis-je la faire apparaître en temps réel ?

Pourquoi ma sortie Python est-elle retardée et comment puis-je la faire apparaître en temps réel ?

DDD
DDDoriginal
2024-11-12 11:31:02517parcourir

Why is my Python output delayed, and how can I make it appear in real-time?

Comprendre la sortie retardée du terminal en Python

Python met par défaut la sortie en mémoire tampon pour améliorer les performances en la transmettant en une seule fois plutôt qu'individuellement à d'autres programmes comme le terminal. En l'absence de nouvelle ligne, les instructions d'impression sont généralement mises en mémoire tampon ligne par ligne, ce qui entraîne un retard dans l'affichage du texte souhaité.

Résoudre le problème

Pour les instructions d'impression uniques :

  • Python 3.x : Utiliser le paramètre flush dans l'impression fonction pour vider explicitement la sortie, comme indiqué ci-dessous :
for _ in range(10):
    print('.', end=' ', flush=True)
    time.sleep(.2)  # or other time-consuming work
  • Python 2.x : Utilisez la méthode .flush du flux sys.stdout pour forcer la sortie transmission :
for _ in range(10):
    print '.',
    sys.stdout.flush()
    time.sleep(.2)  # or other time-consuming work

Pour une impression multiple Déclarations :

Au lieu de vider chaque impression individuellement, vous pouvez désactiver complètement la mise en mémoire tampon des lignes. Voici quelques solutions potentielles :

  • Définissez la variable d'environnement PYTHONUNBUFFERED sur True :

    export PYTHONUNBUFFERED=1
  • Utilisez le module fcntl pour manipuler les descripteurs de fichiers :

    import fcntl
    
    stdout_fileno = sys.stdout.fileno()
    fcntl.fcntl(stdout_fileno, fcntl.F_SETFL, os.O_NONBLOCK)
  • Utilisez des bibliothèques tierces comme tqdm ou joblib pour fournir des barres de progression avec des mises à jour en temps réel.

En mettant en œuvre ces techniques, vous pouvez garantir que le résultat s'affiche immédiatement dans le terminal, offrant ainsi une expérience plus informative et interactive pendant l'exécution du script.

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!

Déclaration:
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