Python中的tqdm库:简化进度条的实用工具

介绍

在 Python 编程中,经常会遇到需要显示长时间运行任务的进度的情况,这时候使用进度条工具可以让用户清晰了解任务的完成进度。tqdm 是一个 Python 的进度条库,它的全称是"taqaddum",这个词来自阿拉伯语,意为 "进步"。tqdm 库提供了一种在 Python 中显示进度条的简单而灵活的方式,可以用于迭代任务、循环、文件读写等场景,让用户能够清晰地看到任务的进度并且在终端上进行动态更新。

首先tqdm库的官方文档网址:tqdm documentationicon-default.png?t=N7T8https://tqdm.github.io/

tqdm 的特点包括:

  1. 开销较低:tqdm每次迭代大约为 60 纳秒(在某些情况下为 80 纳秒),并且经过单元测试以确保性能不会出现倒退。除了低延迟之外,tqdm 使用智能算法来预测剩余时间并跳过不必要的迭代显示,这在大多数情况下都可以实现可忽略的开销。
  2. 兼容性高:tqdm 可以在任何平台上运行(Linux、Windows、Mac、FreeBSD、NetBSD、Solaris/SunOS),在任何控制台或 GUI 中使用,并且与 IPython/Jupyter 笔记本兼容。
  3. 轻量化:tqdm 不需要任何依赖项(甚至不需要 !),只需要 Python 和支持控制字符(如换行符 \n 和回车符 \r)的环境即可。

本文将探讨 tqdm 库的一些用法,让大家学会在需要的场景使用它来自定义一个进度条。

安装tqdm

命令行输入:pip install tqdm 就可以安装。

基本用法

tqdm直接传入可迭代对象

from tqdm import tqdm
import time
for i in tqdm(range(60)):
    time.sleep(0.05)

运行结果:一个进度条,一共运行3秒

trange(i)

trange(i)就相当于tqdm(range(i))的简单写法,示例代码如下:

for i in trange(0, 100, desc="Training", unit="epoch", colour="#858877", bar_format='{l_bar}{bar:30}{r_bar}'):
    # colour可以指定green/GREEN/RGB,也可以指定RGB值
    time.sleep(0.1)

运行结果(起始值 0、结束值 100、描述文本 "Training"、单位 "epoch"、颜色 "#858877"):

使用update控制进度条更新的进度

test = tqdm(total=100)
for i in range(10):  # 总共更新 10 次
    test.update(10)  # 每次更新步长为 10
    time.sleep(1)

运行结果,一秒更新一次,一次更新10%:

使用write更新进度信息

test = trange(12)
for i in test:
    time.sleep(1)
    if not (i % 3):
        tqdm.write('已完成 %i' % i)

运行结果:进度条一直在更新,每隔3秒打印一次信息

通过set_description和set_postfix设置进度条显示信息

with trange(10) as tr:
    for i in tr:
        tr.set_description("左提示 %i" % i)  # 进度条左边显示信息
        tr.set_postfix(loss=random(), gen=randint(1, 999), str="右提示", lst=[2024, 2025])  # 进度条右边显示信息
        time.sleep(0.1)

运行结果:进度条左侧的提示信息会随着i值变化而变化,右侧的gen的值也是随机变化

嵌套循环的进度条

for i in notebook.tnrange(4, desc="第一层循环"):
    for j in notebook.tnrange(100, desc="第二层循环"):
        time.sleep(0.01)

这段代码我测试的是只能在jupyter notebook上使用,pycharm运行出来没有效果

pycharm运行效果:

jupyter notebook运行效果:

总结

本文给大家展示了几种tqdm的常用方法函数,供大家日常使用。但是tqdm库的使用远不止如此,比如它还可以和图形化界面结合,在图形化界面里制作一个进度条等等,具体想要更深入学习可以去官方文档看一下。

  • 27
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会三十六变的猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值