Ich möchte einige Debug-Anweisungen während einer Schleife in meiner Funktion drucken, und ich verwende IPython, um die Funktion aufzurufen. Lassen ein Beispiel Funktion sein:Wie die gedruckten Anweisungen in IPython leeren
def test_print():
import time
for i in range(5):
time.sleep(2)
print i, time.time()
Das Ergebnis ist wie folgt:
0 1372337149.84
1 1372337151.84
2 1372337153.85
3 1372337155.85
4 1372337157.85
I jede Reihe erwarten für 2 Sekunden zu bedruckenden, dann warten. Aber das Verhalten ist wie folgt. I beobachten zuerst:
0 1372337149.84
1
dann nach 2 Sekunden beobachten I den Zeitstempel 1
und die ID der nächsten Reihe, die 2
ist. Ich beobachte endlich den letzten Zeitstempel. Ich konnte nicht herausfinden, warum es sich so verhält statt einer Reihe nach der anderen. Irgendwelche Gedanken? Benötige ich eine spezielle Flush-Funktion, um zu drucken, was noch gedruckt werden soll?
Es normalerweise für mich funktioniert. – Doorknob
Mit CPython verhält es sich wie erwartet. Für Linux und Windows. – Elazar
Ich benutze Canopy 1.0.1. Es hat Python 2.7.3 64 Bit drin. – petrichor