Ve výchozím nastavení print()
Pythonu funkce přesměruje svůj výstup na sys.stdout
, jehož dokumentace specifikuje toto:
Když je interaktivní,
stdout
astderr
proudy jsou ukládány do vyrovnávací paměti řádků. Jinak jsou ukládány do vyrovnávací paměti bloků jako běžné textové soubory. Tuto hodnotu můžete přepsat pomocí-u
možnost příkazového řádku.
Všimněte si dobře, že tyto dokumenty nenechávají prostor pro obecné vlivy prostředí, jako je vliv stdbuf
v režimu ukládání do vyrovnávací paměti sys.stdout
:je bez vyrovnávací paměti, pokud -u
byla použita volba (nebo ekvivalentně, pokud proměnná prostředí PYTHONUNBUFFERED
bylo nastaveno), jinak s řádkovou vyrovnávací pamětí, pokud je interaktivní, a s blokovou vyrovnávací pamětí, pokud není interaktivní.
Programy mohou řídit své vlastní ukládání do vyrovnávací paměti, jako dokumenty stdbuf
potvrdit:
POZNÁMKA:Pokud COMMAND upraví ukládání do vyrovnávací paměti svých standardních streamů (např. „tee“), přepíše to odpovídající nastavení změněná pomocí „stdbuf“. Také některé filtry (jako 'dd' a 'cat' atd.) nepoužívají proudy pro I/O, a nejsou tedy ovlivněny nastavením 'stdbuf'.
Vzhledem k tomu, že Python explicitně specifikuje podrobnosti o ukládání do vyrovnávací paměti, je rozumné očekávat, že ve skutečnosti své ukládání do vyrovnávací paměti spravuje, a tím pádem zpochybňuje jakýkoli účinek stdbuf
.