You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python while循环调用time.sleep无输出直到KeyboardInterrupt的问题

问题原因

这是Python默认的标准输出缓冲机制导致的:
当输出内容不包含换行符、且输出流未触发自动刷新条件时,Python会先把要打印的内容暂存在内存缓冲区中,不会立刻推送到屏幕显示。你的代码里print设置了end=" ",每次打印结束的字符是空格而非默认的换行符,循环里每次打印的内容都堆在缓冲区里没有被刷出,直到你按下Ctrl+C触发程序终止,系统才会强制清空缓冲区,所有攒住的内容才会一次性显示出来,和sleep函数、无限循环本身没有关系。

解决方法

你可以任选下面一种方案修复:

  • 方案1:给print函数增加flush=True参数,强制每次打印完成后立刻刷新缓冲区,修改后的代码如下:
from colorama import Back
from time import sleep
while True:
    print(Back.RED +'Lol' ,sep=" " ,end=" ", flush=True)
    sleep(0.2)
  • 方案2:运行脚本时增加-u启动参数,直接让Python运行全程关闭标准输出缓冲,不需要修改业务代码,启动命令参考:python -u colograma.py
  • 方案3:手动调用标准输出刷新方法,导入sys模块后,在每次print后执行sys.stdout.flush(),效果和flush=True完全一致。

补充说明:你触发键盘中断后看到的连续"Lol"是缓冲区攒下的历史打印内容,后面跟着的KeyboardInterrupt报错是中断操作本身的正常提示,和输出延迟问题无关。

内容的提问来源于stack exchange,提问作者UserThatProgram'sHorribly

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 05:09:16