python 进度条

Abstract

最近接触到了两个 Python 进度条工具:qqdmtqdm 在此记录学习过程。

qqdm

Python 中的一个轻量级、快速的进度条工具。

Installation

pip install qqdm

Usage

下面是一个简单的例子,设脚本名为 demo.py

import time
import random
from qqdm import qqdm, format_str

tw = qqdm(range(10), desc=format_str('bold', 'Des'))

for i in tw:
	loss = random.random()
	acc = random.random()
	tw.set_infos(  # 每次迭代,是更新控制台内容
		{
			'loss': f'{loss:.4f}',
			'acc': f'{acc:.4f}',
		}
	)
	time.sleep(0.5)

在控制台输入 python demo.py,则输出内容如下:

可以看到,set_infos 中的字典内容 lossacc 被显示在了控制台。此外,显示的信息还有 Iters, Elapsed Time, Speed,分别代表着当前迭代位置(6/10)、已耗时间和剩余时间(00:00:03<00:00:02)、迭代速度(1.96it/s)。

解读:

  1. 首先,我们要先创建一个 qqdm 对象,需要提供一个迭代器(range(10)),和 desc=format_str('bold', 'Description')
  2. 生成的 qqdm 对象也是迭代器,它返回原迭代器的内容
  3. desc=format_str('bold', 'Description') 对应控制台中进度条前的文字(见上图)。
  4. 通过 qqdm 对象的 set_infos() 函数更改控制台内容,需提供一个字典。

Notes

如果把代码改成下面这样:

import time
import random
from qqdm import qqdm, format_str

tw = qqdm(range(10), desc=format_str('bold', 'Description'))

info = {
	'loss': '0.000',
	'acc': '0.000'
}

for i in tw:
	loss = random.random()
	acc = random.random()
	info['loss'] = f'{loss:.4f}'
	info['acc'] = f'{acc:.4f}'
	info[str(i)] = str(i * 2)  # 每次迭代向 info 字典添加内容
	tw.set_infos(  # 每次迭代,是更新控制台内容, 哪怕每次提供的字典 keys 有变化,还是可以
		info
	)
	time.sleep(1.0)

发现,控制台的表目是变化的, 0   1   2   ⋯ 0~1~2~\cdots 0 1 2  竟然逐渐显示:

还需要注意的地方是,信息字典的 key 只接受 str,所以其他对象要先转化为字符串;value 不受限制。

tqdm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值