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

别再傻傻print了!用tqdm给你的Python脚本加个进度条,代码瞬间专业

告别print调试用tqdm打造专业级Python进度监控系统在数据处理和批量任务中我们常常需要监控长时间运行的循环进度。传统print语句虽然简单直接但会导致终端输出混乱、难以估算剩余时间更无法在Jupyter等环境中提供优雅的交互体验。本文将带你深度掌握tqdm库从基础用法到高级定制让你的Python脚本输出焕然一新。1. 为什么需要专业进度条想象你正在处理一个包含10万条记录的数据集每次循环都用print(fProcessing {i}/100000)输出进度。这不仅会产生海量终端输出还会严重拖慢程序速度终端I/O是昂贵操作掩盖重要信息关键日志被淹没在进度输出中缺乏时间预测无法估算任务完成时间破坏界面整洁在Jupyter等环境中显得杂乱无章相比之下tqdm提供了from tqdm import tqdm import time for i in tqdm(range(100000)): time.sleep(0.001) # 模拟处理耗时这段代码会生成一个动态进度条自动计算并显示已完成比例当前处理速度it/s已用时间和预计剩余时间内存占用监控需额外配置2. tqdm核心功能全解析2.1 基础迭代器封装tqdm最基本用法是直接包装任意可迭代对象from tqdm import tqdm # 列表处理示例 data [x**2 for x in range(10000)] results [] for x in tqdm(data): results.append(complex_calculation(x))对于range迭代可以使用更简洁的trangefrom tqdm import trange for i in trange(1000, descTraining): train_step(i)2.2 多进度条并行处理嵌套循环时可以创建多个进度条实例from tqdm import tqdm outer tqdm(range(10), descEpochs) inner tqdm(range(100), descBatches, leaveFalse) for i in outer: for j in inner: train_batch(i, j) inner.reset() # 内层循环重置关键参数说明leaveFalse内层进度条完成后自动清除reset()重用进度条实例避免重复创建2.3 自定义样式与布局tqdm支持丰富的格式定制bar_format {l_bar}{bar}| {n_fmt}/{total_fmt} [{elapsed}{remaining}, {rate_fmt}] pbar tqdm(range(100), bar_formatbar_format, ncols80)常用占位符{bar}进度条本身{n_fmt}当前步数{rate_fmt}处理速率{elapsed}已用时间{remaining}预计剩余时间3. 高级应用场景3.1 异步任务监控结合concurrent.futures监控并行任务from concurrent.futures import ThreadPoolExecutor from tqdm import tqdm def process_item(x): time.sleep(0.1) return x**2 with ThreadPoolExecutor() as executor: results list(tqdm(executor.map(process_item, range(100)), total100))3.2 文件处理进度监控大文件读取进度from tqdm import tqdm def read_large_file(path): with open(path, rb) as f: file_size os.path.getsize(path) chunk_size 1024 * 1024 with tqdm(totalfile_size, unitB, unit_scaleTrue) as pbar: while True: data f.read(chunk_size) if not data: break process_data(data) pbar.update(len(data))3.3 深度学习训练PyTorch训练循环集成示例from tqdm import tqdm epochs 10 train_loader DataLoader(dataset, batch_size64) for epoch in range(epochs): epoch_bar tqdm(train_loader, descfEpoch {epoch1}) for batch in epoch_bar: loss train_step(batch) epoch_bar.set_postfix(lossloss.item())4. 性能优化与陷阱规避4.1 刷新频率控制默认情况下tqdm会频繁刷新界面可通过以下方式优化# 每10次迭代刷新一次 with tqdm(range(1000), mininterval0.5) as pbar: for i in pbar: time.sleep(0.01)4.2 内存高效处理处理大型可迭代对象时避免直接包装内存密集型对象# 不推荐 - 会预加载所有数据 for x in tqdm(list(big_generator())): process(x) # 推荐 - 流式处理 for x in tqdm(big_generator()): process(x)4.3 常见问题排查进度条不显示检查是否在终端环境运行非IDE内置控制台尝试设置disableFalse显式启用进度条跳动确保每次迭代耗时相对均匀考虑设置smoothing0.3平滑显示多线程异常使用tqdm.contrib.concurrent中的线程安全版本或为每个线程创建独立进度条在实际项目中我发现结合rich库的进度条能获得更丰富的视觉效果但tqdm以其轻量级和稳定性仍然是大多数场景的首选。特别是在服务器后台任务中tqdm的纯文本输出更容易被日志系统捕获和处理。

相关文章:

别再傻傻print了!用tqdm给你的Python脚本加个进度条,代码瞬间专业

告别print调试!用tqdm打造专业级Python进度监控系统 在数据处理和批量任务中,我们常常需要监控长时间运行的循环进度。传统print语句虽然简单直接,但会导致终端输出混乱、难以估算剩余时间,更无法在Jupyter等环境中提供优雅的交互…...

labview框架下的产线MES系统:物料管理、排产计划与功能齐全的全方位管理

labview框架 产线MES系统 物料管理,排产计划,设备管理,报表管理,功能齐全 扫码追溯 PLC通信 数据库存储 标签打印最近在搞生产线自动化升级,发现用LabVIEW搭MES系统真香。这个可视化编程平台自带工业基因,处…...

用WildCard虚拟卡搞定GitHub Copilot付费订阅,实测避坑指南(含手续费提醒)

WildCard虚拟卡订阅GitHub Copilot全流程避坑指南 去年夏天,我在重构一个开源项目时第一次尝试了GitHub Copilot。当时就被它精准的代码补全能力震惊——直到付款环节才意识到,国内信用卡根本无法完成订阅。经过多次尝试和失败,最终通过WildC…...

S32K344 Flash Driver实战:手把手教你用C40_Ip库实现任意字节写入与扇区解锁

S32K344 Flash驱动深度实战:突破C40_Ip库8字节对齐限制的工程解决方案 从真实案例看Flash驱动的工程挑战 去年在为某新能源车厂开发OTA升级功能时,我们团队遇到了一个典型的嵌入式开发困境:S32K344微控制器的官方Flash驱动库C40_Ip强制要求所…...

Java的java.util.random.RandomGenerator随机数质量测试与统计特性验证

Java随机数生成器的质量测试与统计特性验证 在计算机科学中,高质量的随机数生成器(RNG)对密码学、模拟实验和游戏开发等领域至关重要。Java的java.util.random.RandomGenerator接口及其实现类(如L32X64MixRandom、Xoroshiro128Pl…...

如何用PyMICAPS将复杂气象数据转化为专业图表?

如何用PyMICAPS将复杂气象数据转化为专业图表? 【免费下载链接】PyMICAPS 气象数据可视化,用matplotlib和basemap绘制micaps数据 项目地址: https://gitcode.com/gh_mirrors/py/PyMICAPS 面对海量气象观测数据,你是否曾为如何将它们直…...

VSCode远程文件不同步?先别重装!2026版新增5层诊断树+自动修复CLI,3分钟定位root cause

更多请点击: https://intelliparadigm.com 第一章:VSCode 2026远程文件同步优化概览 VSCode 2026 引入了基于增量哈希比对与端到端加密通道的全新远程同步引擎,显著降低高延迟网络下的文件传输抖动与冗余开销。该机制默认启用,无…...

别再死磕公式了!用Python+NumPy图解RMA算法中的Stolt插值核心

用PythonNumPy图解RMA算法:Stolt插值的视觉化实践 当你第一次接触合成孔径雷达(SAR)成像时,那些频域变换、相位补偿的数学推导是不是让你望而却步?特别是RMA(距离徙动算法)中的Stolt插值环节,往往成为理解整个算法的最大障碍。今天…...

不平衡分类问题评估:从指标选择到实战避坑

1. 不平衡分类问题的评估困境第一次处理信用卡欺诈检测项目时,我盯着99.7%准确率的模型结果沾沾自喜,直到业务方甩来一句"这模型根本抓不到欺诈交易"才如梦初醒。这就是典型的不平衡分类陷阱——当正负样本比例悬殊时(比如正常交易…...

3分钟速通:Apache Commons FileUpload 2.0如何彻底解决Java文件上传难题?

3分钟速通:Apache Commons FileUpload 2.0如何彻底解决Java文件上传难题? 【免费下载链接】commons-fileupload Apache Commons FileUpload is a robust, high-performance, file upload capability to your servlets and web applications 项目地址: …...

别再死记硬背了!深入浅出聊聊Vision Transformer里那个神秘的‘CLS Token’

解密Vision Transformer中的CLS Token:从设计哲学到实践智慧 在计算机视觉领域,Transformer架构的引入彻底改变了传统卷积神经网络(CNN)的统治地位。而Vision Transformer(ViT)中那个神秘的CLS Token&#…...

解决Blender到Unity FBX转换的终极指南:告别模型旋转错乱

解决Blender到Unity FBX转换的终极指南:告别模型旋转错乱 【免费下载链接】blender-to-unity-fbx-exporter FBX exporter addon for Blender compatible with Unitys coordinate and scaling system. 项目地址: https://gitcode.com/gh_mirrors/bl/blender-to-uni…...

Win11注册表修复:一键导入.reg文件,快速恢复右键新建txt功能(附文件下载)

Win11右键新建文本文档功能修复实战指南 每次右键想快速新建一个文本文档时,却发现菜单里少了这个选项,确实让人抓狂。这个问题在Win11上并不罕见,通常是由于注册表项损坏或记事本应用关联异常导致的。本文将带你深入了解问题根源&#xff0c…...

【收藏备用】2026年大模型岗位拆解+零基础入门指南,程序员转型/小白入行必看(附全套学习资料)

2026年作为AI大模型应用全面爆发的关键一年,这项技术早已跳出实验室的局限,深度融入互联网、金融、医疗、自动驾驶等各个行业,成为程序员突破职业瓶颈、小白零基础入行的黄金赛道🔥 相信很多人都有这样的困惑:“大模型…...

人类微生物组研究的终极解决方案:如何用curatedMetagenomicData快速完成标准化分析

人类微生物组研究的终极解决方案:如何用curatedMetagenomicData快速完成标准化分析 【免费下载链接】curatedMetagenomicData Curated Metagenomic Data of the Human Microbiome 项目地址: https://gitcode.com/gh_mirrors/cu/curatedMetagenomicData 你是否…...

告别理论!用一张‘眼图’看懂你的GTX链路信号质量(误码率、抖动、噪声容限全解析)

从眼图诊断到链路优化:GTX信号质量实战解码手册 当示波器屏幕上那个神秘的"眼睛"缓缓睁开时,它正在向你诉说整个高速链路的健康状态。这张由无数比特流叠加而成的图形,远比任何参数表格都更直观地揭示了信号在时域和幅值域的完整故…...

Qwen3.5-4B-AWQ一文详解:AWQ量化原理+Qwen3.5架构适配技术解析

Qwen3.5-4B-AWQ一文详解:AWQ量化原理Qwen3.5架构适配技术解析 1. 模型概述 Qwen3.5-4B-AWQ-4bit是阿里云通义千问团队推出的轻量化大语言模型,基于Qwen3.5 4B稠密模型通过AWQ量化技术实现4bit压缩。该模型在保持高性能的同时大幅降低资源需求&#xff…...

别再傻傻分不清!Python Turtle里setheading()和left()/right()到底啥区别?

Python Turtle绘图:彻底理解setheading()与left()/right()的方向控制逻辑 第一次接触Python Turtle库时,那个小小的箭头海龟总让人又爱又恨。特别是当你想让它转向特定方向时,setheading()和left()/right()这两个看似相似的功能,却…...

构建智能安全运维体系,谷歌上线 Agent 及全链路治理能力

Google Cloud Next 26 重磅发布:AI Agent 驱动的全新安全范式 在 Google Cloud Next 26 大会上,谷歌有限责任公司今日发布了一系列全面的安全更新,涵盖 Google 安全运维平台新增的三款 AI Agent,以及将 Wiz 公司的防护范围扩展至竞…...

如何快速免费分析无人机飞行日志?5分钟掌握UAV Log Viewer终极指南

如何快速免费分析无人机飞行日志?5分钟掌握UAV Log Viewer终极指南 【免费下载链接】UAVLogViewer An online viewer for UAV log files 项目地址: https://gitcode.com/gh_mirrors/ua/UAVLogViewer 还在为看不懂无人机飞行数据而烦恼吗?每次飞行…...

终极指南:5分钟为现代游戏添加专业级CRT复古显示效果

终极指南:5分钟为现代游戏添加专业级CRT复古显示效果 【免费下载链接】crt-royale-reshade A port of crt-royale from libretro to ReShade 项目地址: https://gitcode.com/gh_mirrors/cr/crt-royale-reshade 想让你的现代游戏画面瞬间穿越回80-90年代的CRT…...

实验室数字化转型终极指南:如何用SENAITE LIMS开源系统实现全流程自动化管理

实验室数字化转型终极指南:如何用SENAITE LIMS开源系统实现全流程自动化管理 【免费下载链接】senaite.lims SENAITE Meta Package 项目地址: https://gitcode.com/gh_mirrors/se/senaite.lims 还在为实验室数据混乱、样本追踪困难、合规性管理头疼吗&#x…...

Cadence IC617蒙特卡洛仿真实操:手把手教你搞定运放失调电压的统计分布分析

Cadence IC617蒙特卡洛仿真实战:运放失调电压的统计分析与设计优化 在模拟电路设计中,运放的失调电压(Vos)是影响系统精度的关键参数之一。特别是在高精度应用场景中,如医疗设备、精密测量仪器等,微小的失调电压都可能导致整个系统…...

Layerdivider终极指南:3步将单张图片转换为专业PSD分层文件

Layerdivider终极指南:3步将单张图片转换为专业PSD分层文件 【免费下载链接】layerdivider A tool to divide a single illustration into a layered structure. 项目地址: https://gitcode.com/gh_mirrors/la/layerdivider 你是否曾为了一张复杂的插画需要在…...

MicroBlaze程序太大BRAM放不下?试试SREC Bootloader从SPI Flash加载到DDR(附lwip实例调试心得)

MicroBlaze大程序加载实战:从SPI Flash到DDR的SREC Bootloader深度解析 当MicroBlaze处理器需要运行lwip协议栈或文件系统等复杂应用时,程序体积往往会膨胀到几十MB,远超FPGA内部BRAM的容量限制。本文将深入探讨如何通过SREC Bootloader将大型…...

《趣谈网络协议》笔记 -- 第24讲

食用说明:在找《趣谈网络协议》的学习笔记时候,感觉大家可能都是在看刘超老师的pdf文稿, 按照新人小白喜欢记录的特性,来记录一下自己的学习笔记(会记录一些大佬的评论),从24讲 开始&#xff0c…...

基于ASP.NET Core的医院不良事件管理系统的架构设计

基于ASP.NET Core的医院不良事件管理系统的架构设计 前言 医院不良事件管理是医疗质量安全管理的重要环节,一个优秀的不良事件管理系统需要覆盖事件上报、审核追踪、分析统计的完整闭环。本文将详细介绍如何基于ASP.NET Core构建一个完整的医院不良事件管理系统&…...

17种统计假设检验方法及Python实现指南

1. 统计假设检验的核心价值与应用场景统计假设检验是数据分析师和研究人员最常用的工具之一。它帮助我们基于样本数据对总体特征做出概率性判断,而不是仅凭直觉或表面现象下结论。在实际工作中,我经常遇到这样的场景:产品经理想知道新版本是否…...

终极微信自动化指南:如何用wxauto轻松管理你的微信消息

终极微信自动化指南:如何用wxauto轻松管理你的微信消息 【免费下载链接】wxauto Windows版本微信客户端(非网页版)自动化,可实现简单的发送、接收微信消息,简单微信机器人 项目地址: https://gitcode.com/gh_mirrors…...

终极Elsevier审稿状态追踪指南:3分钟免费安装,实时监控投稿进度

终极Elsevier审稿状态追踪指南:3分钟免费安装,实时监控投稿进度 【免费下载链接】Elsevier-Tracker 项目地址: https://gitcode.com/gh_mirrors/el/Elsevier-Tracker 还在为Elsevier期刊投稿后的漫长等待而焦虑吗?Elsevier Tracker是…...