Python中print()的end参数为何导致time.sleep()下的延迟输出?
为什么使用print()的end参数会导致输出延迟?
这本质是Python的输出缓冲机制在起作用,和end参数本身无关,只是end参数的用法刚好触发了缓冲的特殊表现:
- Python默认会对标准输出(stdout)做缓冲处理,目的是减少I/O操作次数、提升程序性能。缓冲区的刷新时机通常有三种:
- 缓冲区被填满时
- 输出内容包含换行符
\n时(针对终端输出场景) - 程序执行结束时自动刷新
结合你的三段代码就能对应理解:
- 第一段代码用默认的
end='\n',每次print(i)都会输出换行符,触发缓冲区即时刷新,所以能每隔2秒看到一行输出。 - 第二段代码把
end设为空格" ",输出内容里没有换行符,每次打印的内容都被暂存在缓冲区里,直到整个循环结束(累计等待10秒)才一次性刷新输出,所以看起来是延迟到最后才显示所有内容。 - 第三段代码添加
flush=True参数,强制print()函数在每次执行时立刻刷新缓冲区,跳过缓冲等待逻辑,因此能按照预期每隔2秒输出一个数字。
内容的提问来源于stack exchange,提问作者Park
相关产品推荐
相关产品推荐

