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 相关文章推荐
Python 命令行参数sys.argv
Sep 06 Python
Python去掉字符串中空格的方法
Mar 11 Python
用python 制作图片转pdf工具
Jan 30 Python
Python制作钉钉加密/解密工具
Dec 07 Python
浅谈Python脚本开头及导包注释自动添加方法
Oct 27 Python
Python银行系统实战源码
Oct 25 Python
使用python快速在局域网内搭建http传输文件服务的方法
Nov 14 Python
python实现文法左递归的消除方法
May 22 Python
python db类用法说明
Jul 07 Python
PyTorch 导数应用的使用教程
Aug 31 Python
Python 快速验证代理IP是否有效的方法实现
Jul 15 Python
Python编程源码报错解决方法总结经验分享
Oct 05 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
关于php fread()使用技巧
2010/01/22 PHP
php分页函数完整实例代码
2014/09/22 PHP
Zend Framework教程之视图组件Zend_View用法详解
2016/03/05 PHP
php版微信小店API二次开发及使用示例
2016/11/12 PHP
laravel框架中间件简单使用方法示例
2020/01/25 PHP
sliderToggle在写jquery的计时器setTimeouter中不生效
2014/05/26 Javascript
jQuery中append()方法用法实例
2014/12/25 Javascript
javascript三元运算符用法实例
2015/04/16 Javascript
基于JavaScript实现轮播图代码
2016/07/14 Javascript
JS实现将Asp.Net的DateTime Json类型转换为标准时间的方法
2016/08/02 Javascript
js replace(a,b)之替换字符串中所有指定字符的方法
2016/08/17 Javascript
省市区三级联动jquery实现代码
2020/04/15 Javascript
微信小程序 解决swiper不显示图片的方法
2017/01/04 Javascript
使用cookie绕过验证码登录的实现代码
2017/10/12 Javascript
vue.js实例对象+组件树的详细介绍
2017/10/20 Javascript
three.js实现3D影院的原理的代码分析
2017/12/18 Javascript
vue中使用echarts制作圆环图的实例代码
2018/07/27 Javascript
解决webpack dev-server不能匹配post请求的问题
2018/08/24 Javascript
自己动手封装一个React Native多级联动
2018/09/19 Javascript
解决JS表单验证只有第一个IF起作用的问题
2018/12/04 Javascript
React 父子组件通信的实现方法
2019/12/05 Javascript
vue实现在进行增删改操作后刷新页面
2020/08/05 Javascript
Openlayers实现距离面积测量
2020/09/28 Javascript
举例讲解如何在Python编程中进行迭代和遍历
2016/01/19 Python
python list格式数据excel导出方法
2018/10/31 Python
ubuntu 16.04下python版本切换的方法
2019/06/14 Python
Python读取JSON数据操作实例解析
2020/05/18 Python
Python3爬虫发送请求的知识点实例
2020/07/30 Python
python用分数表示矩阵的方法实例
2021/01/11 Python
日本著名化妆品零售网站:Cosme Land
2019/03/01 全球购物
zooplus波兰:在线宠物店
2019/07/21 全球购物
什么是典型的软件三层结构?软件设计为什么要分层?软件分层有什么好处?
2012/03/14 面试题
天逸系统(武汉)有限公司Java笔试题
2015/12/29 面试题
应届生会计求职信
2013/11/11 职场文书
升学宴演讲稿
2014/09/01 职场文书
幼儿教师辞职信范文
2015/03/02 职场文书