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的正则表达式re模块的常用方法
Mar 09 Python
Python实现测试磁盘性能的方法
Mar 12 Python
一篇文章搞懂Python的类与对象名称空间
Dec 10 Python
解决python写入带有中文的字符到文件错误的问题
Jan 31 Python
pandas进行时间数据的转换和计算时间差并提取年月日
Jul 06 Python
django之自定义软删除Model的方法
Aug 14 Python
Pytorch 数据加载与数据预处理方式
Dec 31 Python
Python面向对象原理与基础语法详解
Jan 02 Python
python MultipartEncoder传输zip文件实例
Apr 07 Python
python将unicode和str互相转化的实现
May 11 Python
Pandas的Apply函数具体使用
Jul 21 Python
手把手教你从PyCharm安装到激活(最新激活码),亲测有效可激活至2089年
Nov 25 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删除数组中重复元素的方法
2015/12/22 PHP
yii2.0整合阿里云oss的示例代码
2017/09/19 PHP
php ActiveMQ的安装与使用方法图文教程
2020/02/23 PHP
php实现简单四则运算器
2020/11/29 PHP
JavaScript中OnLoad几种使用方法
2012/12/15 Javascript
浅析JQuery UI Dialog的样式设置问题
2013/12/18 Javascript
jquery easyui中treegrid用法的简单实例
2014/02/18 Javascript
解决Jquery鼠标经过不停滑动的问题
2014/03/03 Javascript
微信JS接口汇总及使用详解
2015/01/09 Javascript
浅谈javascript中this在事件中的应用
2015/02/15 Javascript
JS实现仿饿了么在浏览器标签页失去焦点时网页Title改变
2017/06/01 Javascript
微信小程序实现轮播图效果
2017/09/07 Javascript
Angular2实现组件交互的方法分析
2017/12/19 Javascript
js计算两个时间差 天 时 分 秒 毫秒的代码
2019/05/21 Javascript
js实现数据导出为EXCEL(支持大量数据导出)
2020/03/31 Javascript
浅谈vue 多个变量同时赋相同值互相影响
2020/08/05 Javascript
[01:01:52]完美世界DOTA2联赛PWL S2 GXR vs Magma 第二场 11.25
2020/11/26 DOTA
用Python制作简单的朴素基数估计器的教程
2015/04/01 Python
在Django中使用Sitemap的方法讲解
2015/07/22 Python
windows下numpy下载与安装图文教程
2019/04/02 Python
我们为什么要减少Python中循环的使用
2019/07/10 Python
如何基于python生成list的所有的子集
2019/11/11 Python
Python pandas RFM模型应用实例详解
2019/11/20 Python
使用TensorFlow搭建一个全连接神经网络教程
2020/02/06 Python
python tkinter之顶层菜单、弹出菜单实例
2020/03/04 Python
pygame实现弹球游戏
2020/04/14 Python
Python基于内置函数type创建新类型
2020/10/22 Python
pytho matplotlib工具栏源码探析一之禁用工具栏、默认工具栏和工具栏管理器三种模式的差异
2021/02/25 Python
Lou & Grey美国官网:主打舒适性面料服饰
2017/12/21 全球购物
电脑教师的自我评价
2013/12/18 职场文书
网络信息管理员岗位职责
2014/01/05 职场文书
公司活动方案范文
2014/03/06 职场文书
学生个人自我鉴定范文
2014/03/28 职场文书
三严三实学习心得体会
2014/10/13 职场文书
县委务虚会发言材料
2014/10/20 职场文书
医德医风自我评价2015
2015/03/03 职场文书