2017-06-28 5 views
0

Ich verwende time.sleep() in einem Programm, aber die Zeilen scheinen nicht in Ordnung zu sein. Hier ist der Code:Funktion time.sleep() funktioniert nicht

print("Line 1") 
time.sleep(1) 
print("Line 2") 
time.sleep(1) 
print("Line 3") 
time.sleep(1) 

Und es läuft wie folgt aus:

(wartet) Linie 1 Linie 2 (wartet) Linie 3

Statt:

Linie 1 (wartet) Zeile 2 (wartet) Zeile 3 (wartet)

Ich hatte dieses Problem mit einer Menge von Programmen, für die ich diese Funktion nutze, fand nie wirklich eine Lösung. Irgendwelche Vorschläge?

Antwort

3

Versuchen Sie, ohne Ausgangspufferung, d. H. python -u foo.py. Sie können auch versuchen, sys.stdout.flush() nach jeder print aufzurufen, nur um es zu testen.

+1

In Python3 konnten Sie die Puffer auf einfache Weise leeren: 'print (line1, flush = True)'. – VPfB

+0

Tut mir leid, ich bin ziemlich neu bei Python. Können Sie das einfacher erklären? – Tom

+0

Wenn Sie drucken, druckt es möglicherweise nicht direkt direkt in dem Terminalfenster, aber sammelt lieber einige Byte (oder sogar ein paar Zeilen) Wert in einem Puffer, bevor dieser Puffer zu dem Terminalfenster "gespült" wird. Dadurch wird das Drucken beschleunigt. Wenn Sie die Pufferung deaktivieren, wird der gesamte Druckvorgang sofort direkt in das Terminalfenster übertragen. – csl