python -c 'import time; print(1); time.sleep(1); print(2)
⇒ 1 s'affiche et après un certain temps, 2 s'affiche.
sh -c 'echo 1; sleep 1; echo 2'
⇒ 1 s'affiche et après un certain temps, 2 s'affiche.
python -c 'import time; print(1); time.sleep(1); print(2) | tee /dev/null
⇒ Après un certain temps, 1 et 2 s'affichent en même temps
sh -c 'echo 1; sleep 1; echo 2' | tee /dev/null
⇒ 1 s'affiche et après un certain temps, 2 s'affiche.
Python est intelligent, donc si stdout et stderr sont des terminaux, ils tamponneront la ligne, sinon ils tamponneront normalement. (Lors de la sortie de beaucoup, la mise en mémoire tampon est extrêmement plus rapide)
Au fait, Python le fait lui-même, vous ne pouvez donc pas changer le comportement avec la commande stdbuf
.
-u
, il devient sans tampon.python -u -c 'import time; print(1); time.sleep(1); print(2) | tee
⇒ 1 s'affiche et après un certain temps, 2 s'affiche.