Maison >développement back-end >Tutoriel Python >Comment puis-je désactiver la mise en mémoire tampon de sortie pour sys.stdout en Python ?

Comment puis-je désactiver la mise en mémoire tampon de sortie pour sys.stdout en Python ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-27 09:49:09946parcourir

How Can I Disable Output Buffering for sys.stdout in Python?

Désactivation de la mise en mémoire tampon de sortie dans l'interpréteur de Python pour sys.stdout

L'interpréteur de Python active la mise en mémoire tampon de sortie par défaut pour sys.stdout, un fichier de type objet qui accepte la sortie standard.

Désactivation de la mise en mémoire tampon Méthodes :

Pour désactiver la mise en mémoire tampon de sortie, il existe plusieurs approches :

  • Commutateur de ligne de commande :
python -u [script.py]
  • Cours de wrapper pour sys.stdout :
class Unbuffered(object):
    def __init__(self, stream):
        self.stream = stream
    def write(self, data):
        self.stream.write(data)
        self.stream.flush()
    def writelines(self, datas):
        self.stream.writelines(datas)
        self.stream.flush()
    def __getattr__(self, attr):
        return getattr(self.stream, attr)

import sys
sys.stdout = Unbuffered(sys.stdout)
  • Variable d'environnement PYTHONUNBUFFERED :

Définition de cette variable sur une valeur non vide désactive buffering :

export PYTHONUNBUFFERED=1
  • Modification du descripteur de fichier sys.stdout :

Cette méthode consiste à ouvrir un nouveau descripteur de fichier sans mise en mémoire tampon :

import os
sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)

De plus, comme mentionné dans la question, les indicateurs globaux peuvent être définis par programme pendant l'exécution. Cependant, il ne semble pas y avoir d'indicateur global explicite qui désactive la mise en mémoire tampon de sortie.

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