介绍
在 Python 编程中,经常会遇到需要显示长时间运行任务的进度的情况,这时候使用进度条工具可以让用户清晰了解任务的完成进度。tqdm 是一个 Python 的进度条库,它的全称是"taqaddum",这个词来自阿拉伯语,意为 "进步"。tqdm 库提供了一种在 Python 中显示进度条的简单而灵活的方式,可以用于迭代任务、循环、文件读写等场景,让用户能够清晰地看到任务的进度并且在终端上进行动态更新。
首先tqdm库的官方文档网址:tqdm documentationhttps://tqdm.github.io/
tqdm 的特点包括:
- 开销较低:tqdm每次迭代大约为 60 纳秒(在某些情况下为 80 纳秒),并且经过单元测试以确保性能不会出现倒退。除了低延迟之外,tqdm 使用智能算法来预测剩余时间并跳过不必要的迭代显示,这在大多数情况下都可以实现可忽略的开销。
- 兼容性高:tqdm 可以在任何平台上运行(Linux、Windows、Mac、FreeBSD、NetBSD、Solaris/SunOS),在任何控制台或 GUI 中使用,并且与 IPython/Jupyter 笔记本兼容。
- 轻量化: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库的使用远不止如此,比如它还可以和图形化界面结合,在图形化界面里制作一个进度条等等,具体想要更深入学习可以去官方文档看一下。
标签:tqdm,进度条,Python,实用工具,sleep,time,trange,运行 From: https://blog.csdn.net/qq_64192931/article/details/139222624