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
Libérer: 2024-12-27 09:49:09
original
946 Les gens l'ont consulté

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]
Copier après la connexion
  • 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)
Copier après la connexion
  • Variable d'environnement PYTHONUNBUFFERED :

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

export PYTHONUNBUFFERED=1
Copier après la connexion
  • 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)
Copier après la connexion

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!

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