Per impostazione predefinita, print()
di Python La funzione dirige il suo output a sys.stdout
, la cui documentazione specifica quanto segue:
Quando interattivo,
stdout
estderr
i flussi sono bufferizzati di riga. In caso contrario, sono bufferizzati a blocchi come i normali file di testo. Puoi sovrascrivere questo valore con-u
opzione della riga di comando.
Nota bene che quei documenti non lasciano spazio a influenze ambientali generali, come quella del stdbuf
comando, sulla modalità buffering di sys.stdout
:è senza buffer se -u
è stata utilizzata l'opzione (o, equivalentemente, se la variabile d'ambiente PYTHONUNBUFFERED
era impostato), altrimenti line-buffered se interattivo e block-buffered se non interattivo.
I programmi possono controllare il proprio buffering, come i documenti di stdbuf
riconoscere:
NOTA:se COMMAND regola il buffering dei suoi flussi standard ('tee' fa per es.), ciò sovrascriverà le impostazioni corrispondenti modificate da 'stdbuf'. Inoltre alcuni filtri (come 'dd' e 'cat' ecc.) non usano stream per I/O, e quindi non sono influenzati dalle impostazioni 'stdbuf'.
Poiché Python specifica esplicitamente i dettagli del buffering, è ragionevole aspettarsi che in realtà gestisca affermativamente il suo buffering, ipotizzando così qualsiasi effetto di stdbuf
.