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赋值操作方法分享
Mar 23 Python
Python isinstance函数介绍
Apr 14 Python
python实现媒体播放器功能
Feb 11 Python
Python中判断子串存在的性能比较及分析总结
Jun 23 Python
基于python实现对文件进行切分行
Apr 26 Python
python logging.info在终端没输出的解决
May 12 Python
什么是python的列表推导式
May 26 Python
python -v 报错问题的解决方法
Sep 15 Python
Python 字典一个键对应多个值的方法
Sep 29 Python
python try...finally...的实现方法
Nov 25 Python
matplotlib源码解析标题实现(窗口标题,标题,子图标题不同之间的差异)
Feb 22 Python
Python Matplotlib绘制动画的代码详解
May 30 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+Ajax检测用户名或邮件注册时是否已经存在实例教程
2014/08/23 PHP
php精确的统计在线人数的方法
2015/10/21 PHP
javascript 树控件 比较好用
2009/06/11 Javascript
jQuery图片滚动图片的效果(另类实现)
2013/06/02 Javascript
js实现可拖动DIV的方法
2013/12/17 Javascript
Javascript基础教程之比较操作符
2015/01/18 Javascript
jQuery实现鼠标滑过链接控制图片的滑动展开与隐藏效果
2015/10/28 Javascript
JavaScript判断DIV内容是否为空的方法
2016/01/29 Javascript
ionic组件ion-tabs选项卡切换效果实例
2016/08/27 Javascript
JavaScript简单实现合并两个Json对象的方法示例
2017/10/16 Javascript
vue中改变选中当前项的显示隐藏或者状态的实现方法
2018/02/08 Javascript
如何从零开始手写Koa2框架
2019/03/22 Javascript
jquery实现下载图片功能
2019/07/18 jQuery
ionic+html5+API实现双击返回键退出应用
2019/09/17 Javascript
layui(1.0.9)文件上传upload,前后端的实例代码
2019/09/26 Javascript
vue设置全局访问接口API地址操作
2020/08/14 Javascript
微信小程序实现转盘抽奖
2020/09/21 Javascript
微信小程序用户登录和登录态维护的实现
2020/12/10 Javascript
python中循环语句while用法实例
2015/05/16 Python
实现python版本的按任意键继续/退出
2016/09/26 Python
详解supervisor使用教程
2017/11/21 Python
python爬虫获取京东手机图片的图文教程
2017/12/29 Python
python绘制立方体的方法
2018/07/02 Python
Python实现最常见加密方式详解
2019/07/13 Python
scikit-learn线性回归,多元回归,多项式回归的实现
2019/08/29 Python
Python csv文件记录流程代码解析
2020/07/16 Python
Python 操作 MySQL数据库
2020/09/18 Python
经典而简洁的婚礼主持词
2014/03/13 职场文书
公司股权转让协议书
2014/04/12 职场文书
暑期培训班招生方案
2014/08/26 职场文书
群众路线教育实践活动的心得体会
2014/09/03 职场文书
光棍节联谊晚会活动策划书
2014/10/10 职场文书
法定代表人免职证明
2015/06/24 职场文书
优秀班干部主要事迹材料
2015/11/04 职场文书
初三英语教学反思
2016/02/15 职场文书
开发微信小程序之WXSS样式教程
2022/04/18 HTML / CSS