当前位置:首页>python>tqdm,一个强大的 Python 库!

tqdm,一个强大的 Python 库!

  • 2026-10-21 13:27:57
tqdm,一个强大的 Python 库!

点击上方卡片关注我

设置星标 学习更多技能

在处理大规模数据或执行耗时任务时,常常不知道程序运行到哪一步,还需要等待多久。tqdm是一个轻量级的Python进度条库,能够为循环、迭代器和任何可迭代对象自动添加进度条显示,实时展示任务完成百分比、已用时间、预计剩余时间等信息。

安装

1、基础安装

使用pip命令即可完成安装:

pip install tqdm

2、验证安装

安装完成后,运行以下代码验证:

from tqdm import tqdmimport timefor i in tqdm(range(100)):    time.sleep(0.01)

如果终端显示了进度条,说明安装成功。

核心特性

  • 极简API:只需在可迭代对象外包裹tqdm()即可使用
  • 零依赖:纯Python实现,无需额外依赖库
  • 性能优越:开销极小,不会明显影响程序运行速度
  • 自动适配:智能计算迭代速度和剩余时间
  • 多环境支持:兼容命令行、Jupyter Notebook、GUI等多种环境
  • 高度可定制:支持自定义进度条样式、颜色和显示信息

基本功能

1、基础循环进度条

最常见的使用场景是为普通的for循环添加进度条。只需将range()或列表等可迭代对象传入tqdm()函数,就能立即看到实时进度信息,包括已完成的迭代次数、完成百分比、已用时间和预计剩余时间。

from tqdm import tqdmimport time# 为循环添加进度条data = range(1000)for item in tqdm(data, desc="处理中"):    time.sleep(0.001)  # 模拟耗时操作

2、手动更新进度

在某些复杂场景中,需要手动控制进度更新的时机和步长。下面的代码展示如何创建进度条对象并手动更新进度值。这种方式适用于不规则的迭代场景,比如批量下载文件时,每次下载完成后根据文件大小更新不同的进度量。

from tqdm import tqdm# 手动控制进度更新with tqdm(total=100, desc="下载进度") as pbar:for i in range(10):# 执行某个任务        time.sleep(0.1)# 手动更新进度        pbar.update(10)  # 每次更新10个单位

3、嵌套进度条

处理多层循环任务时,tqdm支持嵌套显示多个进度条。下面的示例模拟了批量处理多个文件的场景,外层进度条显示文件处理进度,内层进度条显示单个文件的处理进度。通过position和leave参数可以控制进度条的显示位置和是否保留,确保多层进度条不会相互干扰。

from tqdm import tqdm# 嵌套进度条用于多层循环for i in tqdm(range(5), desc="外层循环", position=0):for j in tqdm(range(100), desc=f"内层 {i}", position=1, leave=False):        time.sleep(0.01)

高级功能

1、自定义进度条格式

tqdm允许用户完全自定义进度条的显示内容和格式。以下代码演示如何使用bar_format参数定制进度信息,可以选择性显示百分比、速率、已用时间等指标。

from tqdm import tqdm# 自定义进度条显示格式for i in tqdm(range(100),              bar_format='{l_bar}{bar:30}{r_bar}',              ncols=80,              colour='green'):    time.sleep(0.02)

2、与pandas集成

数据科学工作中经常需要对DataFrame进行行级或列级操作。tqdm提供了专门的pandas集成方法,可以为apply、map等操作添加进度条。下面的代码展示如何在DataFrame的apply操作中显示进度,只需调用tqdm.pandas()进行注册,然后使用progress_apply替代原生apply方法即可。

from tqdm import tqdmimport pandas as pd# 注册tqdm到pandastqdm.pandas(desc="数据处理")# 为DataFrame操作添加进度条df = pd.DataFrame({'a': range(1000)})df['b'] = df['a'].progress_apply(lambda x: x ** 2)

3、多线程并发进度

在多线程或多进程环境下,tqdm能够为每个并发任务创建独立的进度条。下面的示例使用concurrent.futures模块配合tqdm.as_completed()函数,实现了多线程任务的实时进度跟踪。每完成一个任务,进度条就会更新一次,并且可以通过set_description动态显示当前完成的任务信息。

from tqdm import tqdmfrom concurrent.futures import ThreadPoolExecutorimport timedeftask(n):    time.sleep(0.1)return n * 2# 多线程任务进度监控with ThreadPoolExecutor(max_workers=4) as executor:    results = list(tqdm(        executor.map(task, range(50)),        total=50,        desc="多线程处理"    ))

总结

tqdm是一个设计精巧、使用简单的Python进度条库,通过极简的API设计,让开发者仅用一行代码就能为程序添加专业的进度显示功能。不仅支持基础的循环迭代,还能应对嵌套循环、并发任务、数据框操作等复杂场景。丰富的自定义选项使其能够适配各种终端环境和显示需求。在数据处理、模型训练、文件操作等耗时任务中,tqdm提供的实时反馈能够显著改善用户体验,帮助开发者更好地掌控程序运行状态。

💡推荐阅读

如果在编程工具充值使用上遇到麻烦,推荐一个牛逼的中转工具!一次性搞定 Codex 、Claude Code和 gemini,内容介绍和付费兑换详见文末阅读原文。

📘 我们整理了一份《AI 编程出海蓝皮书》,汇集了过去几个月团队在出海实战中沉淀下来的核心经验。内容持续更新ing

从需求、工具、部署、收款,到 SEO、推广、引流,一步步带你搞懂普通人也能启动的出海路径。这份资料能帮你快速入门、少踩坑。

扫码或微信搜索 257735添加微信,回复【出海资料】即可免费领取。

Vercel 模板一键部署,上线出海网站比想象中简单!

网站SEO必备工具:Google Search Console 使用教程

Claude Code 和 Codex,一个平台全搞定,开发者狂喜!

3 分钟搞定内网穿透,让别人访问你的本地服务

从Sora热度飙升,看懂 Google Trends 的找词逻辑

最新文章

随机文章