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中利用sorted()函数排序的简单教程
Apr 27 Python
python中abs&map&reduce简介
Feb 20 Python
用python编写第一个IDA插件的实例
May 29 Python
Python中print和return的作用及区别解析
May 05 Python
python 中xpath爬虫实例详解
Aug 26 Python
简单了解python filter、map、reduce的区别
Jan 14 Python
Python对Tornado请求与响应的数据处理
Feb 12 Python
python开发入门——set的使用
Sep 03 Python
Python语言编写智力问答小游戏功能
Oct 13 Python
如何利用Python 进行边缘检测
Oct 14 Python
使用pandas生成/读取csv文件的方法实例
Jul 09 Python
基于PyQt5制作一个群发邮件工具
Apr 08 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使用array_fill定义多维数组的方法
2015/03/18 PHP
PHP+Ajax 检测网络是否正常实例详解
2016/12/16 PHP
Linux下快速搭建php开发环境
2017/03/13 PHP
Laravel 已登陆用户再次查看登陆页面的自动跳转设置方法
2019/09/30 PHP
基于zepto.js实现仿手机QQ空间的大图查看组件ImageView.js详解
2015/03/05 Javascript
js实现图片点击左右轮播
2015/07/08 Javascript
JS实现仿新浪黄色经典滑动门效果代码
2015/09/27 Javascript
理解JS事件循环
2016/01/07 Javascript
select下拉框插件jquery.editable-select详解
2017/01/22 Javascript
详解webpack es6 to es5支持配置
2017/05/04 Javascript
Node.js 使用命令行工具检查更新
2017/06/08 Javascript
vue进行图片的预加载watch用法实例讲解
2018/02/07 Javascript
深入分析element ScrollBar滚动组件源码
2019/01/22 Javascript
AngularJS实现的自定义过滤器简单示例
2019/02/02 Javascript
Angular2实现的秒表及改良版示例
2019/05/10 Javascript
d3.js实现图形拖拽
2019/12/19 Javascript
vscode中的vue项目报错Property ‘xxx‘ does not exist on type ‘CombinedVueInstance<{ readyOnly...Vetur(2339)
2020/09/11 Javascript
详解微信小程序轨迹回放实现及遇到的坑
2021/02/02 Javascript
[02:11]2016国际邀请赛中国区预选赛最美TA采访现场玩家
2016/06/28 DOTA
[03:48]大碗DOTA
2019/07/25 DOTA
[36:33]完美世界DOTA2联赛循环赛 Matador vs Forest 第一场 11.06
2020/11/06 DOTA
python 解决动态的定义变量名,并给其赋值的方法(大数据处理)
2018/11/10 Python
解决pyinstaller打包发布后的exe文件打开控制台闪退的问题
2019/06/21 Python
在Django admin中编辑ManyToManyField的实现方法
2019/08/09 Python
HTML5 Notification(桌面提醒)功能使用实例
2014/03/17 HTML / CSS
Html5实现移动端、PC端 刮刮卡效果
2016/06/30 HTML / CSS
html5超简单的localStorage实现记住密码的功能实现
2017/09/07 HTML / CSS
AmazeUI 单选框和多选框的实现示例
2020/08/18 HTML / CSS
编辑找工作求职信分享
2014/01/03 职场文书
村容村貌整治方案
2014/05/21 职场文书
团日活动总结模板
2014/06/25 职场文书
连锁超市项目计划书
2014/09/15 职场文书
2014年民警工作总结
2014/11/25 职场文书
年会邀请函范文
2015/01/30 职场文书
幼儿园圣诞节活动总结
2015/05/06 职场文书
奖励申请报告范文
2015/05/15 职场文书