打印之间的延迟

时间:2014-02-22 20:46:37

标签: python

我想要做的是每次打印时添加0.5秒的延迟。但我遇到的问题是它滞后了一段时间然后立刻打印出来。

import time

x = [(0, 1), (2, 3), (4, 5), (6, 7), (8, 7)]

for i in x:
    print(i)
    time.sleep(0.5)

这应该做什么:

(0, 1)
wait 0.5 seconds
(2, 3)
wait 0.5 seconds
(4, 5)
etc
然而,我的问题是它不打印第一个并等待0.5 然后打印下一个,我的做法是等待这么久然后立刻打印出来, 我想知道解决这个问题的方法是什么。

3 个答案:

答案 0 :(得分:5)

有些系统缓冲直到换行。这可能就是你所看到的。

yonili的答案应该可以解决问题。在每个打印语句后添加sys.stdout.flush()

修改

为了它的价值,在我的linux机器上将代码粘贴到ipython中会给出下面的输出,每行之间会有半秒的延迟打印。

(0, 1)
(2, 3)
(4, 5)
(6, 7)
(8, 7)

答案 1 :(得分:2)

尝试在打印后添加sys.stdout.flush()

答案 2 :(得分:1)

看起来你正在使用Python 3,所以你实际上可以在没有任何其他声明的情况下执行此操作。只需将flush=True添加到print语句的参数中,即:

print(i, flush=True)

我在使用加载栏在Python中工作时遇到了同样的问题,这就解决了这个问题。