一、简介
tqdm(读作“tardy”)是一个快速、可扩展的Python进度条库,可以在长时间运行的循环中添加一个进度提示信息,用户只需要封装任意的迭代器tqdm(iterator)。tqdm库非常适合在数据处理、机器学习训练等需要长时间运行的任务中使用,通过提供直观的进度条来增强用户体验。
二、安装
首先,你需要安装tqdm模块。你可以使用pip命令来安装:
pip install tqdm
三、基本使用
1.基本用法
使用tqdm非常简单,只需要将你想要迭代的对象(如列表、元组、集合、文件对象等)传递给tqdm函数即可。
from tqdm import tqdm
import time
# 假设我们有一个包含10个元素的列表
my_list = list(range(10))
# 使用tqdm包装列表
for i in tqdm(my_list):
# 这里可以是任何长时间运行的任务,这里我们简单地用time.sleep模拟
time.sleep(0.1)
当你运行上面的代码时,你会在控制台看到一个动态的进度条,随着循环的迭代而更新。
2.自定义进度条
tqdm允许你自定义进度条的外观和格式。你可以通过desc参数设置进度条前的描述,total参数设置总进度,bar_format参数来自定义进度条的格式。
from tqdm import tqdm
import time
my_list = list(range(100))
# 自定义进度条
for i in tqdm(my_list, desc="Processing", total=len(my_list), bar_format="{desc}: {percentage:3.0f}%|{bar}| {n_fmt}/{total_fmt}"):
time.sleep(0.01)
3.嵌套循环
from tqdm import tqdm
import time
outer_list = list(range(5))
inner_list = list(range(10))
for i in tqdm(outer_list, desc="Outer loop"):
for j in tqdm(inner_list, desc="Inner loop"):
time.sleep(0.01)
4.手动更新进度条
如果你需要手动控制进度条的更新,可以使用tqdm的update()方法。
from tqdm import tqdm
import time
pbar = tqdm(total=100)
for i in range(100):
# 执行一些任务
time.sleep(0.01)
# 手动更新进度条
pbar.update(1)
pbar.close()
四、注意事项
• 当迭代对象的大小是未知的时候,tqdm可能无法正确地显示进度条,因为它不知道何时完成。在这种情况下,你可以使用total=None或者简单地不传递total参数。
• 如果你的代码在多线程或多进程环境中运行,每个线程或进程应该有自己的进度条实例,以避免混淆和竞争条件。
五、总结
tqdm是一个强大而灵活的Python库,用于在长时间运行的循环中添加进度提示。它简单易用,并提供了多种自定义选项,以满足不同的需求。在编写需要长时间迭代的任务时,使用tqdm可以极大地改善用户体验,帮助用户了解任务的进度。
领取专属 10元无门槛券
私享最新 技术干货