Per impostazione predefinita, print() di Python La funzione dirige il suo output a sys.stdout , la cui documentazione specifica quanto segue:
Quando interattivo,
stdoutestderri flussi sono bufferizzati di riga. In caso contrario, sono bufferizzati a blocchi come i normali file di testo. Puoi sovrascrivere questo valore con-uopzione 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 .