当前位置: 首页 > news >正文

tqdm 库

tqdm 是一个 快速、可扩展的 Python 进度条工具。它的名字来自于阿拉伯语 taqaddum (تقدّم),意思是“进步”,同时也是西班牙语 te quiero demasiado (我爱你太多) 的缩写。

它的主要用途是:为循环和长时间运行的操作提供一个视觉上的进度指示器,让你能够直观地看到:

  • 当前进度:已经完成了多少。

  • 执行速度:每秒处理多少迭代(it/s)。

  • 预计剩余时间:大概还需要多久才能完成。

  • 总耗时:已经运行了多长时间。

这在你处理大量数据、训练模型、下载文件或任何需要等待的循环任务时极其有用,可以避免“程序是否卡死了”的焦虑。


主要特点和优势

  1. 易于使用:只需在循环外包装一个 tqdm 函数,即可添加进度条,代码改动极小。

  2. 轻量级:库本身非常小,依赖很少。

  3. 可定制:可以灵活设置描述信息、单位、进度条长度、颜色等。

  4. 高性能:开销极低,通常只会使循环速度降低不到10%。

  5. 平台兼容性好:在命令行、Jupyter Notebook、甚至图形界面中都能良好工作。


基本用法示例

1. 在命令行循环中使用(最常用)

这是 tqdm 最经典的使用场景。

from tqdm import tqdm
import time# 假设我们有一个需要遍历的列表
data = range(1000)# 只需将你的可迭代对象传入 tqdm()
for item in tqdm(data):# 模拟一些耗时的操作,比如处理数据time.sleep(0.01) # 休眠10毫秒
# 输出效果:
# 76%|████████████████████████████         | 756/1000 [00:07<00:02, 105.23it/s]
2. 手动更新进度(适用于非循环或未知总量的任务)

当你不知道总共有多少迭代次数时(例如下载文件),可以手动控制进度条的更新。

from tqdm import tqdm
import time# 创建一个进度条,但不传入总量(total)
pbar = tqdm(total=100) # 这里也可以先设置一个预估的总量for i in range(10):# 模拟一个每次完成量不一致的任务time.sleep(0.2)# 手动更新进度条,这里一次更新了10个单位pbar.update(10)# 记得关闭进度条
pbar.close()
3. 在 Jupyter Notebook 中使用

tqdm 为 Jupyter 提供了专门的子模块,能渲染出更漂亮的网页进度条。

from tqdm.notebook import tqdm
import timefor i in tqdm(range(100)):time.sleep(0.02)
4. 为 pandas 操作添加进度条

tqdm 可以很好地与 pandas 集成。

import pandas as pd
from tqdm import tqdm# 首先需要注册一下
tqdm.pandas()# 创建一个示例DataFrame
df = pd.DataFrame({'x': range(100000)})# 使用 progress_apply 代替 apply,就会显示进度条
df['y'] = df['x'].progress_apply(lambda x: x**2)

常用参数定制

你可以通过参数来美化你的进度条:

for i in tqdm(range(100),desc="Processing",   # 进度条前的描述文字,例如:"Processing: 76%"unit="files",        # 单位,将 it/s 改为 files/sncols=100,           # 进度条的固定宽度ascii=True,          # 使用 ASCII 字符,在某些终端兼容性更好colour='green',      # 设置进度条颜色(不是所有环境都支持)
):time.sleep(0.05)

总结

场景使用方法
标准循环for i in tqdm(iterable):
手动更新(已知总量)pbar = tqdm(total=100); pbar.update(10)
Jupyter Notebookfrom tqdm.notebook import tqdm
Pandas 操作tqdm.pandas(); df.progress_apply(func)

总而言之,tqdm 是每个 Python 开发者工具箱中都应该有的“神器”之一。它用极少的代码极大地提升了用户体验和开发效率,是监控长时间运行任务的绝佳选择。

http://www.dtcms.com/a/393216.html

相关文章:

  • 模块化编程规范与分层设计指南
  • Photoshop - Photoshop 调整照片的颜色强度
  • 【ROS2】通讯机制 Topic 常用命令行
  • DeepSeek的GPU优化秘籍:解锁大规模AI训练的底层效率
  • Gemini in Chrome深度解析:反垄断胜诉后,Chrome开启AI智能浏览时代!
  • 如何修复 Google Chrome 上的白屏问题
  • Camera2原生api级 Demo答
  • 【Redis】Redis缓存与数据库DB数据如何保持同步?
  • 考研408---C语言复习
  • 批量抓取图片
  • WinDivert学习文档之五-————编程API(十一)
  • 【打印菱形】
  • XC7Z100-2FFG900I Xilinx AMD Zynq-7000 FPGA SoC
  • 成本价的SEO优化服务供应链
  • dock生命周期体验-生到死的命令
  • 软件测试方案-模板一
  • 防火墙WEB方式登录配置【HCL模拟】-学习篇(1)
  • Ceph用户管理与cephFS分布式存储实战
  • AgenticSeek:重新定义AI助手的边界 - 100%本地化智能代理系统深度解析
  • 701. 二叉搜索树中的插入操作
  • Spring AI(六)Tool Calling本地回调方法
  • 《2511系统分析师第二遍阅读总结3》
  • 【Linux】系统部分——线程同步与生产者消费者模型
  • No008:共建产业知识生态——DeepSeek如何助力中小企业数字化转型
  • 3.8 开发环境 - IntelliJ IDEA
  • Paimon系列:IDEA环境读写Paimon表
  • Java进阶教程,全面剖析Java多线程编程,插入线程,笔记10
  • 成品油加油站综合服务智慧监管平台! “智控油站,计量秒核查” + “数治加油,科技防猫腻”
  • C++编程学习(第34天)
  • 【数据结构与算法Trip第5站】动态规划