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判断端口是否打开的实现代码
Feb 10 Python
python ddt实现数据驱动
Mar 14 Python
详谈python中冒号与逗号的区别
Apr 18 Python
Scrapy框架使用的基本知识
Oct 21 Python
Python 继承,重写,super()调用父类方法操作示例
Sep 29 Python
Python进程,多进程,获取进程id,给子进程传递参数操作示例
Oct 11 Python
pygame实现成语填空游戏
Oct 29 Python
python打开文件的方式有哪些
Jun 29 Python
关于python3.9安装wordcloud出错的问题及解决办法
Nov 02 Python
如何用Python徒手写线性回归
Jan 25 Python
python模块内置属性概念及实例
Feb 18 Python
教你用Python+selenium搭建自动化测试环境
Jun 18 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
ThinkPHP实现ajax仿官网搜索功能实例
2014/12/02 PHP
PHP中iconv函数转码时截断字符问题的解决方法
2015/01/21 PHP
解决出现SoapFault (looks like we got no XML document)的问题
2017/06/24 PHP
PHP实现统计所有字符在字符串中出现次数的方法
2017/10/17 PHP
PHP用函数嵌入网站访问量计数器
2017/10/27 PHP
laravel返回统一格式错误码问题
2019/11/04 PHP
Javascript 浮点运算的问题分析与解决方法
2013/08/27 Javascript
javascript显式类型转换实例分析
2015/04/25 Javascript
jQuery mobile 移动web(6)
2015/12/20 Javascript
针对后台列表table拖拽比较实用的jquery拖动排序
2016/10/10 Javascript
js前端解决跨域问题的8种方案(最新最全)
2016/11/18 Javascript
利用jquery如何从json中读取数据追加到html中
2017/12/01 jQuery
Vue调试神器vue-devtools安装方法
2017/12/12 Javascript
javascript使用正则实现去掉字符串前面的所有0
2018/07/23 Javascript
微信小程序导航栏滑动定位功能示例(实现CSS3的positionsticky效果)
2019/01/24 Javascript
一篇文章带你搞懂Vue虚拟Dom与diff算法
2020/08/25 Javascript
vue3.0中setup使用(两种用法)
2020/12/02 Vue.js
[02:22]2018DOTA2亚洲邀请赛VG赛前采访
2018/04/03 DOTA
python处理二进制数据的方法
2015/06/03 Python
Python中PyQt5/PySide2的按钮控件使用实例
2019/08/17 Python
python用pip install时安装失败的一系列问题及解决方法
2020/02/24 Python
如何在python中实现线性回归
2020/08/10 Python
IE滤镜与CSS3效果(详细整理分享)
2013/01/25 HTML / CSS
CSS3过渡transition效果实例介绍
2016/05/03 HTML / CSS
使用CSS3滤镜的filter:blur属性制作毛玻璃模糊效果的方法
2016/07/08 HTML / CSS
如何利用cmp命令比较文件
2013/09/23 面试题
一封普通求职者的求职信
2013/11/20 职场文书
销售演讲稿范文
2014/01/08 职场文书
《晏子使楚》教学反思
2014/02/08 职场文书
坚守艰苦奋斗精神坚决反对享乐主义整改措施
2014/09/17 职场文书
安全责任书
2015/01/29 职场文书
2016年春节慰问信息
2015/03/25 职场文书
工作态度怎么写
2015/06/25 职场文书
golang 接口嵌套实现复用的操作
2021/04/29 Golang
如何理解Vue前后端数据交互与显示
2021/05/10 Vue.js
java开发双人五子棋游戏
2022/05/06 Java/Android