python输出结果刷新及进度条的实现操作

作者:huanghao10 时间:2022-09-24 15:13:15 

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输出结果刷新及进度条的实现操作

来源:https://blog.csdn.net/huanghaocs/article/details/89345059

标签:python,结果,刷新,进度条
0
投稿

猜你喜欢

  • 解析CSS列表样式属性list-style

    2009-03-26 13:16:00
  • ASP中双引号单引号和&连接符使用技巧

    2007-10-01 18:20:00
  • python求最大公约数和最小公倍数的简单方法

    2022-08-31 22:05:45
  • 写给喜欢用DW编写CSS人的一些建议

    2008-05-19 12:09:00
  • ASP平台如何打造金牌英文网站

    2008-04-10 08:47:00
  • python人工智能tensorflow函数tf.get_variable使用方法

    2021-09-14 22:52:09
  • python在CMD界面读取excel所有数据的示例

    2023-03-14 12:36:51
  • MySQL中修改表结构时需要注意的一些地方

    2024-01-29 09:04:11
  • Python 实现文件读写、坐标寻址、查找替换功能

    2021-06-02 07:36:42
  • Pycharm学习教程(5) Python快捷键相关设置

    2021-08-08 18:56:44
  • MySQL中InnoDB存储引擎的锁的基本使用教程

    2024-01-21 09:27:01
  • pytorch 利用lstm做mnist手写数字识别分类的实例

    2023-01-31 03:15:38
  • Python必考的5道面试题集合

    2021-07-11 19:38:41
  • Python模拟登录验证码(代码简单)

    2022-09-04 04:41:37
  • 详解MySQL的Seconds_Behind_Master

    2024-01-18 04:58:00
  • python中字符串最常用的十三个处理操作记录

    2023-10-19 23:25:32
  • Python免费试用最新Openai API的步骤

    2022-04-08 09:03:03
  • golang中的空slice案例

    2023-09-02 12:26:36
  • Python利用ORM控制MongoDB(MongoEngine)的步骤全纪录

    2023-05-08 14:22:05
  • 详解MySQL存储过程参数有三种类型(in、out、inout)

    2024-01-25 17:45:12
  • asp之家 网络编程 m.aspxhome.com