Python 为什么时间。睡眠有时会等待,但有时它会“等待”;“跳到终点”;

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

为什么time.sleep与print(“=”)一起工作,而与print(“=”,end=“”)不一起工作

我刚开始使用Python,但这个问题根本没有意义:我想用某种动画来显示一行。第一个代码(1)运行良好,但没有输出我想要的===行。第二个(2)在等待所有计时器完成后立即打印===:

我错过什么了吗

#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)