python输出结果刷新及进度条的实现操作
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’,最终打印结果如下:
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
显示结果如下,显示有百分比,以及当前处理到多少个
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 django整理(三)页面基础(仿BBS)
- 高并发场景下的httpClient优化使用
- socket.io 相关:Example: A simple chat server(官方 实例)
- django整理(四)配置setting文件(CSS,JS,images,templates)路径
- idea 远程调试 tomcat web应用
- Java 中冷门的 synthetic 关键字原理解读
- Spring 数据库连接(Connection)绑定线程(Thread)的实现
- Golang语言实现AzDG可逆加密算法实例
- python django整理(五)配置favicon.ico,解决警告Not Found: /favicon.ico
- SpringMVC + Mybatis bug调试 SQL正确,查数据库却返回NULL
- 原生javascript实现图片轮播效果代码
- Spring AOP中 args和arg-names的区别
- Golong 语言开发 go-websocket-sample 测试值得拥有
- Java面试系列23-spring(2)-配置数据库驱动、依赖、Mapping等
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Linux中在防火墙中开启80端口方法示例
- Apache 获取真实ip的配置的实现方法
- Linux下文件的切分与合并的简单方法介绍
- ubuntu 系统上为php加上redis 扩展的实现方法
- deepin linux 手动升级内核的方法
- UGL之单色位图
- Linux网络启动问题:Device does not seem to be present解决办法
- UGL之透明位图
- 关于ISR
- python 井字棋-文字版(下)
- Linux下nginx生成日志自动切割的实现方法
- Centos 7.2中双网卡绑定及相关问题踩坑记录
- Linux双网卡绑定实现负载均衡详解
- 单台服务器中利用Apache的VirtualHost如何搭建多个Web站点详解
- linux系统下MongoDB单节点安装教程