python输出结果刷新及进度条的实现操作


Posted in Python onJuly 13, 2020

print函数

python输出主要使用print函数,print函数介绍:

print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)

*objects表示要打印的值,表示多个无名参数或需要打印的值;

sep=' ',对应上面要打印的值中间间隔,默认一个空格;

end='\n',传入值打印完后的结束符号,默认为换行符,可以自行设置;

file=sys.stdout,设置打印输出参数,默认打印到终端,也可设置打印保存到文件;

flush=False,是否刷新打印结果。

一行输出结果并刷新

在一行中显示输出结果,每次刷新,其中'\r'表示回到当前的开头,end=''表示结束符为空,这样就可以每次更新结果

import time
for i in range(15):
  time.sleep(0.5) # 这里为了查看输出变化,实际使用不需要sleep
  print('\r', i, end='')
  # print('\r', 15-i, end='') # 从两位变一位会有问题

上面代码有个问题,当输出i从大到小,有位数变化时,结果不正确,可用format格式化输出,可解决问题:

import time
for i in range(15):
  time.sleep(0.5)
  print('\r', "{:d}".format(15-i), end='')

模型训练中loss和acc的刷新输出

我们在训练机器学习和深度学习模型中,总会隔一段时间输出损失函数和准确率,每次都直接print输出,终端会输出很多信息,这里用单行输出并刷新的方法来输出这些信息,我们设置epochs和batch的数量,每次batch输出刷新,一个epoch完后同时输出train和test的结果。

import time

# 设置epochs和batch的数量
epochs = 5
n_batch = 15
# 这里是测试自己设置的loss和acc
train_loss = 1.2345
train_acc = 0.345678
test_loss = 1.1234
test_acc = 0.235467

for i in range(epochs):
  for j in range(n_batch):
    time.sleep(0.5)
    train_loss -= 0.001
    train_acc += 0.0001

    print("\rEpoch: {:d} batch: {:d} loss: {:.4f} acc: {:.4f} | {:.2%}"
       .format(i+1, j+1, train_loss, train_acc, (j+1)*1.0/n_batch), end='')
       
  test_loss -= 0.001
  test_acc += 0.0001
  
  print("\rEpoch: {:d}/{:d} train_loss: {:.4f} test_loss: {:.4f} train_acc: {:.4f} test_acc: {:.4f}"
   .format(i+1, 5, train_loss, test_loss, train_acc, test_acc), end='\n')

这里注意,print里"Epoch"前面有一个"\r",这个必须要有,同时里面循环end='',外面循环end='\n',最终打印结果如下:

python输出结果刷新及进度条的实现操作

tqdm显示进度条

首先安装tqdm:pip install tqdm

简单使用,读取整数,直接在tqdm中传入一个list, 如果直接给定的是一个整数,可以直接用trange

import time
from tqdm import tqdm, trange

for i in tqdm(range(100)):
  time.sleep(0.05)
  # do something

# for i in trange(100):
#   time.sleep(0.05)
#   # do something

显示结果如下,显示有百分比,以及当前处理到多少个

python输出结果刷新及进度条的实现操作

tdqm输入的list可以是字符串,也可以对输出进度条加一些描述

import time
from tqdm import tqdm
pbar = tqdm(["a", "b", "c", "d", "e"])
for char in pbar:
  time.sleep(0.8)
  pbar.set_description("Processing %s" % char)
  # pbar.set_description("Processing {0}".format(char))

python输出结果刷新及进度条的实现操作

以上这篇python输出结果刷新及进度条的实现操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
pygame学习笔记(4):声音控制
Apr 15 Python
Python编程中的for循环语句学习教程
Oct 14 Python
python类的继承实例详解
Mar 30 Python
numpy.delete删除一列或多列的方法
Apr 03 Python
解决python3 Pycharm上连接数据库时报错的问题
Dec 03 Python
Python定义函数功能与用法实例详解
Apr 08 Python
python单向链表的基本实现与使用方法【定义、遍历、添加、删除、查找等】
Oct 24 Python
python实现引用其他路径包里面的模块
Mar 09 Python
配置python的编程环境之Anaconda + VSCode的教程
Mar 29 Python
用python实现名片管理系统
Jun 18 Python
python爬虫要用到的库总结
Jul 28 Python
Python 中的单分派泛函数你真的了解吗
Jun 22 Python
python实现图像外边界跟踪操作
Jul 13 #Python
Python实现打包成库供别的模块调用
Jul 13 #Python
Python numpy矩阵处理运算工具用法汇总
Jul 13 #Python
解决pyinstaller 打包exe文件太大,用pipenv 缩小exe的问题
Jul 13 #Python
Python使用pyexecjs代码案例解析
Jul 13 #Python
如何在VSCode下使用Jupyter的教程详解
Jul 13 #Python
解决python 虚拟环境删除包无法加载的问题
Jul 13 #Python
You might like
站长助手-网站web在线管理程序 v1.0 下载
2007/05/12 PHP
php模板之Phpbean的目录结构
2008/01/10 PHP
php file_get_contents函数轻松采集html数据
2010/04/22 PHP
php中动态变量用法实例
2015/06/10 PHP
Uglifyjs(JS代码优化工具)入门 安装使用
2020/04/13 Javascript
13 个JavaScript 性能提升技巧分享
2012/07/26 Javascript
javascript如何使用bind指定接收者
2014/05/04 Javascript
jQuery统计上传文件大小的方法
2015/01/24 Javascript
详解JSON1:使用TSQL查询数据和更新JSON数据
2016/11/21 Javascript
Vue添加请求拦截器及vue-resource 拦截器使用
2017/11/23 Javascript
node内置调试方法总结
2018/02/22 Javascript
Vue表单类的父子组件数据传递示例
2018/05/03 Javascript
详解关于webpack多入口热加载很慢的原因
2019/04/24 Javascript
Vue 中使用 typescript的方法详解
2020/02/17 Javascript
Vue 的双向绑定原理与用法揭秘
2020/05/06 Javascript
原生js生成图片验证码
2020/10/11 Javascript
关于vue 项目中浏览器跨域的配置问题
2020/11/10 Javascript
Vant Weapp组件踩坑:picker的初始赋值解决
2020/11/12 Javascript
[50:01]Ti4 冒泡赛第二天 NEWBEE vs Titan
2014/07/15 DOTA
python并发编程之多进程、多线程、异步和协程详解
2016/10/28 Python
Python进阶_关于命名空间与作用域(详解)
2017/05/29 Python
基于Python中求和函数sum的用法详解
2018/06/28 Python
python实现海螺图片的方法示例
2019/05/12 Python
pytorch实现对输入超过三通道的数据进行训练
2020/01/15 Python
python实现贪吃蛇游戏源码
2020/03/21 Python
Python延迟绑定问题原理及解决方案
2020/08/04 Python
使用css3做0.5px的细线的示例代码
2018/01/18 HTML / CSS
Prototype如何更新局部页面
2013/03/03 面试题
行政助理求职自荐信
2013/10/26 职场文书
化学专业毕业生自荐信
2013/11/15 职场文书
快餐公司创业计划书
2014/04/29 职场文书
计划生育证明格式及范本
2014/10/09 职场文书
承诺书模板大全
2015/05/04 职场文书
2015年党建工作汇报材料
2015/06/25 职场文书
2016入党积极分子心得体会
2016/01/06 职场文书
使用CSS实现百叶窗效果示例代码
2023/05/07 HTML / CSS