文章目录
tqdm
是 Python 进度条库,可以在 Python 长循环中添加一个进度提示信息
。用户只需要封装任意的迭代器
,是一个快速、扩展性强的进度条工具库。
1. 语法
1.1 tqdm 参数
tqdm(iterable=None, desc=None, total=None, leave=True, file=None,
ncols=None, mininterval=0.1, maxinterval=10.0, miniters=None,
ascii=None, disable=False, unit='it', unit_scale=False,
dynamic_ncols=False, smoothing=0.3, bar_format=None, initial=0,
position=None, postfix=None, unit_divisor=1000, write_bytes=None,
lock_args=None, nrows=None, colour=None, delay=0, gui=False,
**kwargs):
iterable
: 接收一个可迭代对象。如果iterable为空
的话,则手动通过update
来更新迭代total
: 总的迭代次数,用于计算进度百分比, 默认等于len(iterable)
desc
: 进度条的显示信息,显示在进度条前面(前缀)postfix
: 字典形式信息,例如:loss=0.56, 显示在进度条的末尾(后缀)mininterval
:设置进度条最小的更新间隔
,单位秒
,默认:0.1s
maxinterval
: 设置进度条最大更新间隔
,单位秒
,默认:10s
bar_format
: 设置进度条显示格式,默认为{desc}: {percentage:3.0f}%|{bar}| {n_fmt}/{total_fmt}
ncols
: 设置进度条的宽度nrows
: 设置进度条的高度unit
: 设置进度条的单位,str类型,默认为it
这些参数为相对比较常用
的参数,并且全部都是可选参数
(optional);在自定义进度条当中比较重要的的一个参数为:bar_format
,用于定义进度条的具体格式,所包含的具体数据信息;
1.2 bar_format
下面主要介绍这个参数的具体用法;
bar_format
默认格式为:{l_bar}{bar}{r_bar}
- 进度条分为三部分: 中间的条形图(bar),条形图左边信息(l_bar)、条形图右边信息(r_bar)
l_bar
:{desc}: {percentage:3.0f}%|
, 即前缀信息(desc)
+当前进度的百分比
bar:
进度条r_bar
:|{n_fmt}/{total_fmt}[{elapsed}<{remaining},{rate_fmt}{postfix}]
100%|█████████████████| 3/3 [00:03<00:00, 1.00s/it]
percentage:百分比
n_fmt:当前数
total_fmt:总数
elapsed:消耗的时间
remaining:剩余时间
rate_fmt:速率
postifx:后缀字典描述
desc: 前缀字符串描述
desc、postfix默认为空;
for item in tqdm(data, desc="Processing", bar_format="{l_bar}{bar}| {n_fmt}/{total_fmt} [{elapsed}<{remaining}, {rate_fmt}{postfix}]"):
# 在这里添加你的代码
案例
yolov8
代码中将tqdm中的bar_format
进行了设置,没有使用原有的bar_format
格式, 简化了显示内容。
TQDM_BAR_FORMAT = "{l_bar}{bar:10}{r_bar}" if VERBOSE else None
基于新的bar_format格式,重新封装了tqdm
,代码如下
from tqdm import tqdm as tqdm_original
class TQDM(tqdm_original):
def __init__(self, *args, **kwargs):
"""Initialize custom Ultralytics tqdm class with different default arguments."""
# Set new default values (these can still be overridden when calling TQDM)
kwargs[