如何在IPython中刷新打印的语句

时间:2013-06-27 12:51:42

标签: python ipython

我想在我的函数循环期间打印一些调试语句,并使用IPython来调用该函数。让一个示例函数为:

def test_print():
    import time
    for i in range(5):
        time.sleep(2)
        print i,  time.time()

结果如下:

0 1372337149.84
1 1372337151.84
2 1372337153.85
3 1372337155.85
4 1372337157.85

我希望打印每一行,然后等待2秒钟。但行为如下。我首先观察:

0 1372337149.84
1 

然后,在2秒后,我观察1的时间戳和下一行的id,即2。我终于看到了最后一张时间戳。我无法弄清楚为什么它表现得像这样,而不是一次一行。有什么想法吗?我是否需要特殊的刷新功能来打印等待打印的内容?

1 个答案:

答案 0 :(得分:11)

我从未使用过IPython,但它应该足以在每个print语句后刷新stdout。

这样的事情应该有用......

def test_print():
    import time
    import sys
    for i in range(5):
        time.sleep(2)
        print i,  time.time()
        sys.stdout.flush()