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的框架中为MySQL实现restful接口的教程
Apr 08 Python
python实现汉诺塔方法汇总
Jul 25 Python
Python连接PostgreSQL数据库的方法
Nov 28 Python
Python实现求两个csv文件交集的方法
Sep 06 Python
Python批量合并有合并单元格的Excel文件详解
Apr 05 Python
python数据结构之线性表的顺序存储结构
Sep 28 Python
深入了解和应用Python 装饰器 @decorator
Apr 02 Python
django rest framework vue 实现用户登录详解
Jul 29 Python
使用python模拟高斯分布例子
Dec 09 Python
Python reshape的用法及多个二维数组合并为三维数组的实例
Feb 07 Python
Keras实现支持masking的Flatten层代码
Jun 16 Python
python爬虫爬取某网站视频的示例代码
Feb 20 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执行速度全攻略
2006/10/09 PHP
PHP递归返回值时出现的问题解决办法
2013/02/19 PHP
在win7中搭建Linux+PHP 开发环境
2014/10/08 PHP
PHP使用mysqldump命令导出数据库
2015/04/14 PHP
laravel框架模板之公共模板、继承、包含实现方法分析
2019/08/30 PHP
JavaScript让IE浏览器event对象符合W3C DOM标准
2009/11/24 Javascript
jquery 经典动画菜单效果代码
2010/01/26 Javascript
jquery tab插件制作实现代码
2010/06/22 Javascript
JS获取URL中的参数数据
2013/12/05 Javascript
JavaScript中判断页面关闭、页面刷新的实现代码
2014/08/27 Javascript
基于Flowplayer打造一款免费的WEB视频播放器附源码
2015/09/06 Javascript
JS实现仿Windows经典风格的选项卡Tab切换代码
2015/10/20 Javascript
JS实现PC手机端和嵌入式滑动拼图验证码三种效果
2017/02/15 Javascript
js实现多行文本框统计剩余字数功能
2017/03/28 Javascript
Angular.JS去掉访问路径URL中的#号详解
2017/03/30 Javascript
Vue.js递归组件构建树形菜单
2017/12/24 Javascript
vue实现微信二次分享以及自定义分享的示例
2019/03/20 Javascript
JS实现音乐钢琴特效
2020/01/06 Javascript
vue实现用户长时间不操作自动退出登录功能的实现代码
2020/07/23 Javascript
Vue 事件的$event参数=事件的值案例
2021/01/29 Vue.js
Python高效编程技巧
2013/01/07 Python
python检测主机的连通性并记录到文件的实例
2018/06/21 Python
wxpython+pymysql实现用户登陆功能
2019/11/19 Python
Python生成词云的实现代码
2020/01/14 Python
Nordgreen手表德国官方网站:丹麦极简主义手表
2019/10/31 全球购物
面向对象设计的原则是什么
2013/02/13 面试题
Java如何读取CLOB字段
2013/10/10 面试题
学校食堂采购员岗位职责
2013/12/05 职场文书
校园自助餐厅的创业计划书
2013/12/26 职场文书
五年级英语教学反思
2014/01/31 职场文书
产品生产计划书
2014/05/07 职场文书
小学语文的各类谚语(70首)
2019/08/15 职场文书
php 获取音视频时长,PHP 利用getid3 获取音频文件时长等数据
2021/04/01 PHP
Spring boot应用启动后首次访问很慢的解决方案
2021/06/23 Java/Android
理解python中装饰器的作用
2021/07/21 Python
分享node.js实现简单登录注册的具体代码
2022/04/26 NodeJs