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

Python之richtqdm包语法、参数和实际应用案例

Python rich-tqdm 完整使用文档(richtqdm/rich_tqdm)

一、包基础概述

1. 核心定位

rich-tqdm是融合rich(终端美化库)与tqdm(进度条库)的增强进度条工具,替代原生tqdm,提供彩色、多组件、分层、表格样式终端进度条,支持日志、进度、数值、时间、速度、文件大小一体化渲染,解决原生tqdm单调黑白、自定义样式繁琐、多任务进度展示混乱问题。
包名两种写法:rich_tqdm(导入规范)、richtqdm(别名),官方仓库包名:rich-tqdm(pip安装用横杠)。

2. 核心功能

  1. 彩色美化进度条:自定义前景/背景色、渐变进度条、边框样式
  2. 多维度进度信息:完成百分比、已耗时、剩余预估、迭代速度、总量/当前值、文件单位自动转换(B/KB/MB/GB)
  3. 多任务并行进度:同时展示多个循环进度条,分层不重叠
  4. 内置rich组件:内嵌文本日志、表格、状态标签、Spinner加载动画
  5. 兼容tqdm全部语法:无缝替换原有tqdm(),代码改动极小
  6. 动态更新数值:支持实时修改进度描述、自定义指标(损失、准确率、内存占用)
  7. 自动适配终端:自适应终端宽度,窄终端自动压缩组件,无排版错乱
  8. 静默模式/日志输出:支持将进度写入文件,不占用终端

二、安装方式

1. 标准pip安装

# 稳定版(推荐)pipinstallrich-tqdm# 国内加速pipinstallrich-tqdm-ihttps://pypi.tuna.tsinghua.edu.cn/simple# 升级版本pipinstall--upgraderich-tqdm

2. 源码安装(最新开发版)

gitclone https://github.com/textualize/rich-tqdm.gitcdrich-tqdm pipinstall.

3. 依赖说明

自动安装依赖:rich>=12.0.0tqdm>=4.60.0typing-extensions,无需手动安装rich。

三、导入与基础语法

1. 两种导入方式

# 方式1:兼容tqdm原生写法(最常用)fromrich_tqdmimporttqdm# 方式2:单独导入进度条对象、进度管理器fromrich_tqdmimportRichTqdm,track

2. 基础语法结构

语法1:遍历迭代器(和tqdm完全一致)
foritemintqdm(iterable,关键字参数):# 业务逻辑pass
语法2:手动步进(手动控制进度,无迭代对象)
pbar=tqdm(total=100,desc="任务")foriinrange(100):# 业务逻辑pbar.update(1)# 步进1pbar.close()
语法3:track快捷封装(简化文件/批量任务)
fromrich_tqdmimporttrackforfileintrack(file_list,desc="读取文件"):pass

四、全部核心参数详解

(一)基础迭代参数(兼容原生tqdm)

参数类型作用默认值
iterable可迭代对象循环对象(list/range/生成器)None
totalint任务总数量,未知时设None自动读取len(iterable)
descstr进度条左侧描述文字“”
leavebool循环结束后是否保留进度条True
disablebool是否关闭进度条(脚本静默运行)False
unitstr迭代单位(如"it""file""MB"“it”
unit_scalebool自动缩放单位(1000/1024)False
minintervalfloat最小刷新间隔(秒),减少刷屏0.1
smoothingfloat速度平滑系数(0~1),平滑预估剩余时间0.3

(二)rich独有美化参数(核心特色)

参数类型作用示例值
bar_stylestr进度条填充颜色样式"green bold""#00ccff"
complete_stylestr已完成区块样式"rgb(0,255,0)"
finished_stylestr全部完成后整体样式"bold red"
pulsebool完成后脉冲闪烁动画True
spinnerstr前置加载动画(rich内置spinner)"dots""line"
show_speedbool是否展示每秒迭代速度True
show_percentagebool是否显示百分比True
show_timebool是否显示已耗时/剩余时间True
show_totalbool是否显示当前/总量数值True
widthint固定进度条宽度,None自适应终端None
transientbool任务结束自动清除进度条False
log_colorstr内嵌日志文字颜色"gray"

(三)自定义动态指标参数

  • postfix:字典/字符串,右侧附加自定义指标(动态更新)
    pbar.set_postfix(loss=0.23,acc=0.95,memory="1.2GB")
  • postfix_style:自定义指标文字颜色

五、8个完整可运行实战案例

案例1:基础循环美化进度条(最简入门)

场景:普通数值循环,彩色绿色进度条

fromrich_tqdmimporttqdmimporttime# range迭代,设置描述、单位、绿色进度条foriintqdm(range(50),desc="数字计算",unit="次",bar_style="green bold"):time.sleep(0.05)

效果:绿色渐变进度条,显示耗时、速度、49/50、98%

案例2:手动update步进,动态更新后置指标

场景:机器学习训练,实时更新损失、准确率

fromrich_tqdmimporttqdmimporttime# 手动创建进度条,总批次200pbar=tqdm(total=200,desc="模型训练",bar_style="cyan")forepochinrange(200):# 模拟训练计算loss=0.5-epoch*0.002acc=epoch/200time.sleep(0.02)# 动态更新右侧指标pbar.set_postfix(loss=f"{loss:.3f}",acc=f"{acc:.3f}")pbar.update(1)pbar.close()

案例3:文件批量处理,自动字节单位转换

场景:遍历文件列表,统计文件大小,单位自动MB/GB

fromrich_tqdmimporttrackimportos file_paths=[f"./temp_{i}.txt"foriinrange(30)]# unit_scale=True 自动换算文件大小单位forfileintrack(file_paths,desc="读取文件",unit="B",unit_scale=True,bar_style="blue"):# 模拟读取文件占用字节file_size=1024*500time.sleep(0.03)

案例4:多任务并行多层进度条(嵌套循环)

场景:双层循环,外层大任务、内层子任务分层进度展示

fromrich_tqdmimporttqdmimporttime# 外层循环fortaskintqdm(range(5),desc="总任务组",bar_style="orange"):# 内层子循环forsubtaskintqdm(range(20),desc=f"子任务-{task}",leave=False,bar_style="light_blue"):time.sleep(0.04)

leave=False:内层完成自动销毁,不堆积多条进度条

案例5:关闭进度条静默模式(脚本后台运行)

场景:定时任务/服务器后台执行,不需要终端进度输出

fromrich_tqdmimporttqdmimporttime# disable=True 完全隐藏进度条,仅执行逻辑data=list(range(100))fordintqdm(data,desc="后台数据清洗",disable=True):time.sleep(0.01)

案例6:transient临时进度条,完成自动清除

场景:一次性短时任务,结束后终端不留进度痕迹

fromrich_tqdmimporttqdmimporttime# transient=True 运行结束自动删除进度条foriintqdm(range(30),desc="临时加载",transient=True,bar_style="magenta"):time.sleep(0.06)

案例7:自定义渐变颜色+Spinner加载动画

场景:数据爬虫,前置动态转圈动画,渐变色进度条

fromrich_tqdmimporttqdmimporttime# spinner指定加载动画,rgb自定义彩色进度pbar=tqdm(range(80),desc="网页爬虫",spinner="dots2",bar_style="#ff6600 bold",finished_style="#00ff00 bold")forpageinpbar:time.sleep(0.05)# 动态描述更新pbar.set_description(f"爬取第{page}页")

案例8:超大循环低刷屏,平滑速度预估

场景:百万级数据迭代,降低刷新频率避免终端卡顿

fromrich_tqdmimporttqdmimporttime# mininterval最小刷新间隔0.5秒,smoothing平滑速度big_data=range(10000)foritemintqdm(big_data,desc="百万数据处理",mininterval=0.5,smoothing=0.1,bar_style="gray"):ifitem%100==0:time.sleep(0.001)

六、常见报错、错误原因与解决方案

错误1:ModuleNotFoundError: No module named ‘rich_tqdm’

  • 原因:包未安装,或安装时输错包名(不能写richtqdm,pip安装必须rich-tqdm
  • 解决:
pipinstallrich-tqdm

错误2:TypeError: tqdm() got an unexpected keyword argument ‘bar_style’

  • 原因1:导入了原生tqdm而非rich_tqdm,原生tqdm无美化参数
  • 原因2:rich-tqdm版本过低,旧版本不支持样式参数
  • 解决:
# 修正导入fromrich_tqdmimporttqdm# 升级包pip install--upgrade rich-tqdm

错误3:进度条疯狂刷屏、终端卡顿

  • 原因:循环逻辑极快,默认0.1秒刷新间隔输出过多
  • 解决:增大mininterval参数,降低刷新频率
tqdm(range(100000),mininterval=0.5)

错误4:嵌套循环内层进度条残留,终端排版混乱

  • 原因:内层循环leave=True(默认),子任务完成不销毁
  • 解决:内层设置leave=False
tqdm(range(20),leave=False)

错误5:Windows cmd终端颜色不显示,只有黑白文字

  • 原因:cmd不支持ANSI彩色转义码
  • 解决:
  1. 使用Windows Terminal / PowerShell
  2. 脚本顶部启用颜色:
importos os.system("color")

错误6:total不指定,进度条显示?/??未知总量

  • 原因:迭代对象无__len__(生成器、数据流),无法自动计算total
  • 解决:手动传入total参数
gen=(iforiinrange(100))tqdm(gen,total=100)

错误7:set_postfix传参时报错TypeError

  • 原因:数值未格式化,传入浮点数/int直接渲染出错
  • 解决:统一转为字符串格式化
pbar.set_postfix(loss=f"{loss:.4f}")

错误8:多线程运行进度条重叠错乱

  • 原因:rich-tqdm非线程安全,多线程共用终端缓冲区
  • 解决:
  1. 单线程使用进度条;
  2. 多线程时disable=True关闭进度,改用日志文件输出。

七、使用注意事项与最佳实践

1. 环境适配

  1. Linux/macOS终端完美支持全部颜色动画;Windows CMD存在色彩兼容问题,推荐Windows Terminal。
  2. 服务器无交互式终端(crontab后台脚本)必须设置disable=True,否则会输出大量乱码。

2. 性能优化

  1. 高速循环务必设置mininterval >=0.2,减少IO刷屏消耗CPU;
  2. 百万级迭代避免频繁调用set_postfix,可每100次迭代更新一次指标;
  3. 不需要彩色时直接用原生tqdm,rich-tqdm有轻微性能损耗。

3. 代码兼容规范

  1. 想要无缝迁移原有tqdm代码,仅修改导入行即可,其余参数完全通用;
  2. 生产环境脚本建议增加开关控制进度条:
verbose=False# 生产环境关闭进度pbar=tqdm(data,disable=notverbose)

4. 嵌套进度规范

多层循环统一内层leave=False,外层保留leave=True,保证终端整洁;不建议超过3层嵌套,分层过多可读性下降。

5. 颜色规范

颜色支持三种格式:英文颜色名(green/red)、RGB字符串rgb(255,0,0)、十六进制#ff0000;可叠加样式修饰:bold加粗、italic斜体、underline下划线。

6. 禁止场景

  1. 多进程/多线程共享同一个tqdm对象,会造成渲染崩溃;
  2. 日志文件输出(重定向python run.py > log.txt)时关闭进度条,ANSI色彩码会污染日志文本;
  3. Jupyter Notebook中部分旧内核Spinner动画失效,改用spinner="none"

7. 内存释放

手动创建pbar = tqdm()对象时,循环结束必须执行pbar.close(),否则终端光标会异常偏移;for循环自动迭代形式无需手动关闭。

《动手学PyTorch建模与应用:从深度学习到大模型》是一本从零基础上手深度学习和大模型的PyTorch实战指南。全书共11章,前6章涵盖深度学习基础,包括张量运算、神经网络原理、数据预处理及卷积神经网络等;后5章进阶探讨图像、文本、音频建模技术,并结合Transformer架构解析大语言模型的开发实践。书中通过房价预测、图像分类等案例讲解模型构建方法,每章附有动手练习题,帮助读者巩固实战能力。内容兼顾数学原理与工程实现,适配PyTorch框架最新技术发展趋势。

http://www.jsqmd.com/news/1070883/

相关文章:

  • 融合物理约束与热图监督的视觉目标跟踪:提升鲁棒性的工程实践
  • 基于LLM多智能体与风险感知的翼型设计框架解析
  • Pikachu——url重定向
  • 【计算机工具类-CI和CD工具Skills】agentic-actions-auditor 技能
  • GRAND解码算法:原理、优化与并行实现
  • 跨平台眼底影像分析:基于任务熵与后验集中性的模型不确定性验证
  • 点云去噪无监督评估:UGD原理、实现与实战指南
  • 关于socket的相关理解
  • 动态调度优化LDGM码有损编码:软硬BPGD算法性能提升实践
  • 基于 Harmony 7.0 应用的时光轴应用首页实现
  • 指令粒度如何影响具身智能体性能:从U型效应到实践策略
  • DeepSeek从入门到精通,2026年最值得用的国产AI
  • 3D高斯泼溅技术:实时渲染与SLAM应用解析
  • 【计算机工具类-安全工具Skills】agentic-actions-auditor 技能
  • ASTRA框架:多主体图像生成中的身份与姿态解耦技术
  • GEOSPAT框架:基于最优传输的地理空间AI跨域泛化实践
  • 用 ChatGPT 5.5 辅助 Java 后端排查慢接口:从日志到修复方案的实践
  • POLAR框架:边缘计算中LoRA适配器智能缓存与路由优化实践
  • Python logging日志模块:分级日志、文件输出、完整工程配置
  • DARLING框架:用变化检测增强强化学习应对非平稳环境
  • Harness Engineering:智能汽车物理层连接的系统工程方法论
  • 基于群体感知与边缘MPC的机器人社交导航算法详解
  • 生成模型在生命科学中的应用:从DNA动力学到蛋白质结构解析
  • 数据分析师的终结?Code Interpreter 与 Agent
  • 本体评估方法论WiseOWL:语义网质量守护者
  • 张量退化∃R完全性:超行列式计算与确定性算法的理论障碍
  • 机器人控制新范式:ReconVLA如何通过不确定性引导与故障感知提升系统鲁棒性
  • 2026最新专业排盘工具精度评测:如何判定传统历法数智化软件误差
  • 深度学习在生物声学中的应用与bacpipe工具解析
  • LTL公式有限迹求值:释放与强释放算子算法详解