I want to print some debug statements during a loop in my function and I use IPython to call the function. Let an example function be:
def test_print():
import time
for i in range(5):
time.sleep(2)
print i, time.time()
The result is like follows:
0 1372337149.84
1 1372337151.84
2 1372337153.85
3 1372337155.85
4 1372337157.85
I expect each row to be printed, then wait for 2 seconds. But the behavior is as follows. I first observe:
0 1372337149.84
1
Then, after 2 seconds I observe the time stamp of 1
and the id of the next row, which is 2
. I observe the last time stamp finally. I couldn't figure out why it behaves like this instead of one row at a time. Any thoughts? Do I need a special flush function to print what is waiting to be printed?
print '\n', i, ; stdout.flush(); print time.time()
– Considerstdout
to a file, some time ago. Does theflush
maybe only occur, if there is no redirection, while ipython does a redirection from python'sstdout
to its ownstdout
? – AfflictionIPython 0.13.2
too.(linux: py 2.7.4) – Erminiaerminie