Ich habe diesen Artikel geschrieben, weil ich ihn manchmal vergesse und schmerzhafte Augen sehe.
Wenn Sie es so ausführen, wie es in der Shell ist, sollte der folgende Befehl wie beschrieben funktionieren. Geben Sie 1 aus und warten Sie 3 Sekunden, dann geben Sie 2 aus.
$ python -c 'import time; print(1); time.sleep(3); print(2)'
1
2
$
Wenn Sie ein Rohr durch dieses Rohr führen, wird es erst dann herauskommen, wenn sich die Puffergröße des Rohrs angesammelt hat.
Im obigen Beispiel ist
$ python -c 'import time; print(1); time.sleep(3); print(2)' | cat
1
2
$
Ich habe es gerade an `` `cat``` weitergeleitet, aber die Zeilen 1 und 2 kommen nach 3 Sekunden zum gleichen Zeitpunkt heraus. Um es so auszudrücken, derjenige, der sagt "das Rohr ist verstopft". Selbst wenn es in eine Datei geschrieben wird, wird es auch mit einer Verzögerung geschrieben.
Wenn Sie dieses Verhalten unterdrücken möchten, verwenden Sie die Option `` `-u```.
$ python -u -c 'import time; print(1); time.sleep(3); print(2)' | cat
1
2
$
↑ Warten Sie 3 Sekunden, nachdem 1 herauskommt, dann kommen 2 heraus.
http://docs.python.jp/3/using/cmdline.html#cmdoption-u
pythonunbuffered
Der gleiche Effekt kann erzielt werden, indem eine nicht leere Zeichenfolge in die Umgebungsvariable eingefügt wird.
Recommended Posts