我想要做的是每次打印时添加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
然后打印下一个,我的做法是等待这么久然后立刻打印出来,
我想知道解决这个问题的方法是什么。
答案 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中工作时遇到了同样的问题,这就解决了这个问题。