2016-08-01 41 views
3
print 'foo', 
time.sleep(1) 
print 'bar' 

Dies scheint time.sleep(1) zuerst ausgeführt werden, druckt dann "foo bar" auf einmal.Warum gibt es keine Verzögerung zwischen dem Drucken in der gleichen Zeile?

jedoch den Druck sowohl foo und bar auf seine eigenen Linien erzeugt die erwartete Verzögerung zwischen den Druckanweisungen:

print 'foo' 
time.sleep(1) 
print 'bar' 

Gibt es etwas, das alle Aussagen Druck stapelt, bis eine neue Zeile Zeichen empfangen wird?

Antwort

7

print wird standardmäßig auf sys.stdout gedruckt, und es wird zwischen Zeilen gepuffert. sys

lesen Sie auch: How to flush output of Python print?

+0

Sieht aus wie läuft Python mit '-u' gibt funktioniert der Trick auch Sie könnten

import time import sys print 'foo' sys.stdout.flush() time.sleep(1) print 'bar 

Referenz der Puffer jeweils nach einer print-Anweisung bündig – victor