python - 为什么打印函数中的 \r 不重写标准输出而是在下一行打印?
问题描述
我正在做一个机器学习项目,我想在标准输出中将模型的准确性和进度显示为不断更新的统计数据。但是,不是更新同一行,而是在(看似)随机次数的迭代后将统计信息打印在新行上。
我已经在一些更简单的代码上对其进行了测试。
for i in range(100000):
print(str(i), end="\r")
我在 Jupyter Notebook 中得到的输出如下:
3181
6180
9180
12501
...
99999
总输出打印在许多行上。
from time import sleep
for i in range(100):
sleep(0.1)
print(str(i), end="\r")
上面的代码工作正常,并且数字在同一行不断更新。
for i in range(100000):
print(str(i), end="\r")
sys.stdout.flush()
上面的代码也有效,但是,它显着减慢了输出。该数字在同一行上更新,但是,它以较慢的速度更新,我认为这与缓冲区速度限制有关。
因此,我希望标准输出在同一行上更新,但也尽可能快地更新,因为两个确实有效的代码片段会显着降低显示输出的速度。
我对该模块没有太多经验sys
,但在我看来这与我的本地设置有关。我运行 Windows 10、python 3.7.1,并且代码正在 Jupyter 笔记本上运行。
解决方案
推荐阅读
- arrays - 为什么打印指向 char 指针的指针的第一个元素会打印字符串的内容?
- .net - 错误:Microsoft.HostIntegration.SNA.Session.SessionException:基础 SNA 会话失败。应用程序必须释放会话
- django - Django queryset Product 模型和 Product_images 模型,TemplateSyntaxError
- jenkins - Jenkinsfile 基于条件的阶段触发
- typescript - 从有区别的联合派生 TypeScript 接口
- powershell - 在读取主机中执行命令
- powershell - PSEXEC的任何替代品?
- django - Problem with save method overriding attribute value
- python - 散景线开/关示例无法正常工作
- sphinx - SphinxSearch - 索引器配置选项问题