Python 为什么时间。睡眠有时会等待,但有时它会“等待”;“跳到终点”;
为什么time.sleep与print(“=”)一起工作,而与print(“=”,end=“”)不一起工作 我刚开始使用Python,但这个问题根本没有意义:我想用某种动画来显示一行。第一个代码(1)运行良好,但没有输出我想要的===行。第二个(2)在等待所有计时器完成后立即打印===: 我错过什么了吗Python 为什么时间。睡眠有时会等待,但有时它会“等待”;“跳到终点”;,python,time,Python,Time,为什么time.sleep与print(“=”)一起工作,而与print(“=”,end=“”)不一起工作 我刚开始使用Python,但这个问题根本没有意义:我想用某种动画来显示一行。第一个代码(1)运行良好,但没有输出我想要的===行。第二个(2)在等待所有计时器完成后立即打印===: 我错过什么了吗 #first import time for x in range(10): print("=") time.sleep(0.2) #second import time
#first
import time
for x in range(10):
print("=")
time.sleep(0.2)
#second
import time
for x in range(10):
print("=", end="")
time.sleep(0.2)
第一个输出:
=
=
=
预计延迟0.2秒,但每条=在新行中
第二个输出:
======
等待2秒钟后
预期:
=====
每个“=”之间的延迟为.2
没关系,我想出了一个解决办法:
更好的解决方案是:
这不是时间的问题。睡眠。您的脚本实际上会暂停指定的200毫秒时间。但是,输出(运行此脚本的任何终端)显然是缓冲的,这是典型的情况。通常可以通过将
flush=True
作为参数传递给print
函数来绕过缓冲
所以
应该是
print("=", end="", flush=True)
相反。您的终端是线路缓冲。可能会尝试
sys.stdout.flush()
。此外,这两个示例都不是有效的Python。在打印到控制台之前,我刚刚阅读了一些有关缓冲的内容,flush将强制打印它。谢谢
for x in range(10):
print("="*x, end="\r")
sys.stdout.flush()
time.sleep(0.1)
# Or
for x in range(10):
print("="*x, end="\r", flush=True)
time.sleep(0.1)
print("=", end="")
print("=", end="", flush=True)