GNU/Linux >> Znalost Linux >  >> Linux

Proč stdbuf nemá žádný vliv na Python?

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 a stderr 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 .


Linux
  1. Proč stránka Apt-key Man nedoporučuje používat její příkaz Add?

  2. Linux – Suid nemá žádný vliv na adresáře s Linuxem?

  3. Proč nemají Ifs žádný účinek v `když Ifs=číst...`?

  1. Proč Ubuntu zastavilo bezplatnou dopravu svých CD?

  2. Při použití os.execlp, proč `python` potřebuje `python` jako argv[0]

  3. chyba pythonu AttributeError:objekt 'module' nemá žádný atribut 'sha1'

  1. Proč má uživatel mysql bash shell v /etc/passwd?

  2. Proč je moje připojení připojení viditelné mimo jeho jmenný prostor připojení?

  3. Proč můj host linux hyper-v nezobrazuje svou ipaddress ve správci hyper-v