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选择排序算法的实现代码
Nov 21 Python
python抓取网页图片示例(python爬虫)
Apr 27 Python
Python操作MySQL简单实现方法
Jan 26 Python
使用Python抓取模板之家的CSS模板
Mar 16 Python
Python中turtle库的使用实例
Sep 09 Python
分享PyCharm的几个使用技巧
Nov 10 Python
Python实现图像的垂直投影示例
Jan 17 Python
Python实现病毒仿真器的方法示例(附demo)
Feb 19 Python
解决python 虚拟环境删除包无法加载的问题
Jul 13 Python
pycharm配置python 设置pip安装源为豆瓣源
Feb 05 Python
Python djanjo之csrf防跨站攻击实验过程
May 14 Python
单身狗福利?Python爬取某婚恋网征婚数据
Jun 03 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 INI配置文件的解析实现分析
2011/01/04 PHP
在windows服务器开启php的gd库phpinfo中未发现
2013/01/13 PHP
dedecms集成财付通支付接口
2014/12/28 PHP
Symfony页面的基本创建实例详解
2015/01/26 PHP
php中使用session防止用户非法登录后台的方法
2015/01/27 PHP
不能再简单的无闪刷新验证码原理很简单
2007/11/05 Javascript
javascript 对象定义方法 简单易学
2009/03/22 Javascript
js 加载并解析XML字符串的代码
2009/12/13 Javascript
JS维吉尼亚密码算法实现代码
2010/11/09 Javascript
浏览器的JavaScript引擎的识别方法
2013/10/20 Javascript
js关于字符长度限制的问题示例探讨
2014/01/24 Javascript
JS实现定时自动关闭DIV层提示框的方法
2015/05/11 Javascript
基于javascript实现图片滑动效果
2016/05/07 Javascript
微信小程序tabBar用法实例详解
2017/12/04 Javascript
JS设计模式之访问者模式定义与用法分析
2018/02/05 Javascript
Vue项目中使用better-scroll实现一个轮播图自动播放功能
2018/12/03 Javascript
JavaScrip数组去重操作实例小结
2019/06/20 Javascript
vue eslint简要配置教程详解
2019/07/26 Javascript
微信小程序 this.triggerEvent()的具体使用
2019/12/10 Javascript
JavaScript观察者模式原理与用法实例详解
2020/03/10 Javascript
[04:56]经典回顾:前Ehome 与 前LGD
2015/02/26 DOTA
[30:55]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第二场 11.18
2020/11/18 DOTA
[01:06:30]DOTA2-DPC中国联赛定级赛 Phoenix vs DLG BO3第二场 1月9日
2021/03/11 DOTA
python 提取key 为中文的json 串方法
2018/12/31 Python
Python流程控制 while循环实现解析
2019/09/02 Python
Python imread、newaxis用法详解
2019/11/04 Python
Selenium结合BeautifulSoup4编写简单的python爬虫
2020/11/06 Python
La Redoute英国官网:法国时尚品牌
2017/04/27 全球购物
Trip.com澳大利亚:在线旅行社
2019/12/01 全球购物
生物化工工艺专业应届生求职信
2013/10/08 职场文书
大学生表扬信范文
2014/01/09 职场文书
广告学专业求职信
2014/06/19 职场文书
人力资源管理毕业求职信
2014/08/05 职场文书
颂军魂爱军营演讲稿
2014/09/13 职场文书
史上最牛辞职信
2015/05/13 职场文书
sass 常用备忘案例详解
2021/09/15 HTML / CSS