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

Python 3.10中带end=''的print()输出异常问题求助

问题描述

我新建了Python 3.10环境,原有一段在Python 3.9.12中运行正常的代码,用于在同一行实时打印当前运行的算法,切换产品时换行。代码示例如下:

print('Product '+ prod + ' - algorithm: ', end='')
# some code
print('Arima ', end='')
# some code running Arima
print('Prophet ', end='')
# some code running Prophet
print('')

在Python 3.9中,会逐步输出内容,实时显示当前运行的算法;但在Python 3.10.6中,需等到执行完第四个print语句后才一次性输出所有内容,无法实时查看进度。不过在调试模式下输出正常,请问该行为变化的原因是什么?

原因分析

这是因为Python的标准输出缓冲策略在3.10版本中发生了细微调整:

  • 当print使用end=''且未触发换行时,Python 3.9默认采用行缓冲或自动刷新逻辑,每一次print的内容都会实时输出到控制台;而Python 3.10优化了标准输出的缓冲规则,默认会累积输出内容,直到遇到换行符(即最后一行print(''))才统一刷新缓冲区,所以无法实时看到进度。
  • 调试模式下输出正常,是因为调试环境会强制禁用标准输出缓冲,确保每一次print的内容都能立即显示。

内容的提问来源于stack exchange,提问作者Jose Simon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 04:05:27