J'ai écrit un article parce que je l'oublie parfois et vois des yeux douloureux.
Si vous l'exécutez tel quel dans le shell, la commande suivante devrait fonctionner comme prévu, comme écrit. Sortie 1 et attendre 3 secondes, puis sortie 2.
$ python -c 'import time; print(1); time.sleep(3); print(2)'
1
2
$
Si vous passez un tuyau à travers cela, il ne sortira que si la taille du tampon du tuyau est accumulée.
Dans l'exemple ci-dessus,
$ python -c 'import time; print(1); time.sleep(3); print(2)' | cat
1
2
$
Je viens de le faire passer à `` chat '', mais les lignes 1 et 2 sortent au même moment après 3 secondes. Pour le dire comme ça, celui qui dit "le tuyau est bouché". Même s'il est écrit dans un fichier, il est également écrit avec un retard.
Si vous souhaitez supprimer ce comportement, utilisez l'option
-u```.
$ python -u -c 'import time; print(1); time.sleep(3); print(2)' | cat
1
2
$
↑ Attendez 3 secondes après la sortie de 1, puis 2 sort.
http://docs.python.jp/3/using/cmdline.html#cmdoption-u
pythonunbuffered
Le même effet peut être obtenu en mettant une chaîne de caractères non vide dans la variable d'environnement.
Recommended Posts