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的Django框架中使用通用视图的方法
Jul 21 Python
放弃 Python 转向 Go语言有人给出了 9 大理由
Oct 20 Python
详解python使用递归、尾递归、循环三种方式实现斐波那契数列
Jan 16 Python
Python操作Sql Server 2008数据库的方法详解
May 17 Python
浅析python继承与多重继承
Sep 13 Python
PyCharm中代码字体大小调整方法
Jul 29 Python
Python OrderedDict的使用案例解析
Oct 25 Python
pycharm不能运行.py文件的解决方法
Feb 12 Python
python内打印变量之%和f的实例
Feb 19 Python
Python3 ID3决策树判断申请贷款是否成功的实现代码
May 21 Python
Python环境配置实现pip加速过程解析
Nov 27 Python
OpenCV 图像梯度的实现方法
Jul 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/01/20 PHP
24条货真价实的PHP代码优化技巧
2016/07/28 PHP
js TextArea的选中区域处理
2010/12/28 Javascript
『jQuery』.html(),.text()和.val()的概述及使用
2013/04/22 Javascript
jQuery的框架介绍
2016/05/11 Javascript
easyui datebox 时间限制,datebox开始时间限制结束时间,datebox截止日期比起始日期大的实现代码
2017/01/12 Javascript
简单实现js悬浮导航效果
2017/02/05 Javascript
从零学习node.js之详解异步控制工具async(八)
2017/02/27 Javascript
vue-hook-form使用详解
2017/04/07 Javascript
Nodejs连接mysql并实现增、删、改、查操作的方法详解
2018/01/04 NodeJs
jQuery 点击获取验证码按钮及倒计时功能
2018/09/20 jQuery
vue-cli3.0如何使用CDN区分开发、生产、预发布环境
2018/11/22 Javascript
详解mpvue中小程序自定义导航组件开发指南
2019/02/11 Javascript
elementUI select组件使用及注意事项详解
2019/05/29 Javascript
通过javascript实现段落的收缩与展开
2019/06/26 Javascript
Ant Design moment对象和字符串之间的相互转化教程
2020/10/27 Javascript
python爬虫爬取淘宝商品信息
2018/02/23 Python
基于Python实现的微信好友数据分析
2018/02/26 Python
Python实现字典排序、按照list中字典的某个key排序的方法示例
2018/12/18 Python
python爬虫 基于requests模块的get请求实现详解
2019/08/20 Python
利用4行Python代码监测每一行程序的运行时间和空间消耗
2020/04/22 Python
python判断元素是否存在的实例方法
2020/09/24 Python
python中turtle库的简单使用教程
2020/11/11 Python
HTML5移动端开发中的Viewport标签及相关CSS用法解析
2016/04/15 HTML / CSS
美国最大的城市服装和运动鞋零售商:Jimmy Jazz
2016/11/19 全球购物
在c#中using和new这两个关键字有什么意义
2013/05/19 面试题
英文自荐信常用句子
2014/03/26 职场文书
2014年教师节国旗下讲话稿
2014/09/10 职场文书
2014年学校禁毒工作总结
2014/12/23 职场文书
农民工工资支付承诺书
2015/05/04 职场文书
公司车队管理制度
2015/08/04 职场文书
读《茶花女》有感:山茶花的盛开与凋零
2020/01/17 职场文书
基于PyTorch实现一个简单的CNN图像分类器
2021/05/29 Python
html5调用摄像头实例代码
2021/06/28 HTML / CSS
mysql 联合索引生效的条件及索引失效的条件
2021/11/20 MySQL
javascript之Object.assign()的痛点分析
2022/03/03 Javascript