Par défaut, le print()
de Python la fonction dirige sa sortie vers sys.stdout
, dont la documentation précise ceci :
Lorsqu'il est interactif,
stdout
etstderr
les flux sont mis en mémoire tampon en ligne. Sinon, ils sont mis en mémoire tampon comme des fichiers texte normaux. Vous pouvez remplacer cette valeur par le-u
option de ligne de commande.
Notez bien que ces docs ne laissent pas de place aux influences environnementales générales, comme celle du stdbuf
commande, sur le mode tampon de sys.stdout
:il n'est pas tamponné si le -u
l'option a été utilisée (ou, de manière équivalente, si la variable d'environnement PYTHONUNBUFFERED
a été défini), sinon tamponné en ligne s'il est interactif et tamponné en bloc s'il n'est pas interactif.
Les programmes peuvent contrôler leur propre mise en mémoire tampon, comme les docs de stdbuf
accuser réception :
REMARQUE :Si COMMAND ajuste la mise en mémoire tampon de ses flux standard ('tee' le fait par exemple), cela remplacera les paramètres correspondants modifiés par 'stdbuf'. De plus, certains filtres (comme 'dd' et 'cat' etc.) n'utilisent pas de flux pour les E/S, et ne sont donc pas affectés par les paramètres 'stdbuf'.
Étant donné que Python spécifie explicitement les détails de la mise en mémoire tampon, il est raisonnable de s'attendre à ce qu'il gère en fait sa mise en mémoire tampon de manière affirmative, annulant ainsi tout effet de stdbuf
.