7

我想在我的函数循环期间打印一些调试语句,我使用 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. 我终于观察到了最后一个时间戳。我不明白为什么它的行为是这样的,而不是一次一行。有什么想法吗?我是否需要特殊的冲洗功能来打印等待打印的内容?

4

1 回答 1

10

我从未使用过 IPython,但在每个print语句之后刷新标准输出就足够了。

像这样的东西应该工作......

def test_print():
    import time
    import sys
    for i in range(5):
        time.sleep(2)
        print i,  time.time()
        sys.stdout.flush()
于 2013-06-27T12:54:48.987 回答