使用 tqdm 提升Python中的进度条体验

news2024/9/19 7:32:12

使用 tqdm 提升Python中的进度条体验

当我们运行长时间的任务(如处理大数据、进行网络请求、训练机器学习模型等),监控进度是非常有必要的。在Python中,tqdm是一个非常流行的库,可以轻松地添加进度条,帮助我们跟踪代码的执行进度。

本文将介绍如何在Python中使用tqdm进度条,并展示一些常见的应用场景。

1. 什么是tqdm?

tqdm是一个简单易用的Python库,能够在循环和迭代中显示进度条。它的名字来自阿拉伯语“taqaddum”,意思是“进展”。tqdm可以与Python的标准库无缝集成,同时支持多种平台和环境,包括Jupyter Notebook。

你可以通过以下命令来安装tqdm:

pip install tqdm

2. 基本用法

使用tqdm的最简单方式是将其应用于循环中。假设我们有一个简单的任务,需要处理大量的数据项:

from tqdm import tqdm
import time

for i in tqdm(range(100)):
    time.sleep(0.1)  # 模拟一个耗时的操作

在运行这段代码时,控制台将显示一个动态更新的进度条。

100%|██████████████████████████████████████████████████| 100/100 [00:10<00:00, 9.90it/s]

进度条显示了当前任务完成的百分比,迭代次数(如 100/100),耗时,甚至处理速度(如 9.90it/s,即每秒处理的项目数)。

3. 应用场景

3.1 处理大文件

tqdm在处理大文件时非常有用,特别是逐行读取大文件的场景。假设我们有一个非常大的日志文件,需要逐行处理:

from tqdm import tqdm

with open('large_log_file.txt', 'r') as f:
    for line in tqdm(f):
        # 模拟处理每行
        time.sleep(0.01)

tqdm会根据文件的行数来显示进度,让我们知道处理到哪一部分。

3.2 批量处理数据

在机器学习或者数据预处理中,经常需要对大量的数据进行批量处理。这时,tqdm可以用于显示数据处理的进度。

import numpy as np
from tqdm import tqdm

data = np.random.random((1000, 1000))

for row in tqdm(data):
    # 模拟对每一行数据的处理
    time.sleep(0.01)

当数据规模庞大时,进度条能直观地告诉你任务的完成进度。

3.3 多重循环

tqdm也可以用于嵌套循环的场景。假设你有多个任务,每个任务包含若干子任务,我们可以为每一层循环都添加进度条:

from tqdm import trange

for i in trange(3, desc='Main Loop'):
    for j in trange(5, desc='Inner Loop'):
        time.sleep(0.1)  # 模拟子任务

在运行时,进度条会分别显示主循环和子循环的进度,让你对复杂流程一目了然。

4. 高级用法

4.1 自定义进度条

tqdm允许你定制进度条的显示内容。例如,可以调整描述文本、总的迭代次数、显示格式等。

for i in tqdm(range(100), desc='Processing', total=100, unit='item'):
    time.sleep(0.1)
  • desc:用于添加自定义描述。
  • total:设置总的迭代次数(如果它无法自动推断)。
  • unit:指定进度条显示的单位。

4.2 使用函数式接口

tqdm还提供了一个函数式接口,可以与其他高阶函数(如map、filter等)结合使用:

from tqdm import tqdm

def process(x):
    time.sleep(0.1)
    return x**2

results = list(tqdm(map(process, range(100)), total=100))

4.3 集成Jupyter Notebook

在Jupyter Notebook中,tqdm有专门的支持,能够在notebook界面上显示进度条:

from tqdm.notebook import tqdm

for i in tqdm(range(100)):
    time.sleep(0.1)

这样进度条会显示在Notebook的单元格输出区域,非常适合数据科学和机器学习的实验。

4.4 多线程或多进程中的进度条

在使用多线程或多进程进行并行任务时,tqdm也支持进度条的显示。通过与concurrent.futures或multiprocessing库结合使用,你可以跟踪每个线程或进程的进度:

from concurrent.futures import ThreadPoolExecutor
from tqdm import tqdm

def task(x):
    time.sleep(0.1)
    return x**2

with ThreadPoolExecutor(max_workers=4) as executor:
    list(tqdm(executor.map(task, range(100)), total=100))

这种方式在并发处理大规模任务时非常有帮助。

5. 小结

tqdm是一个非常强大且灵活的工具,它可以无缝集成到各种场景中,帮助我们直观地了解任务的执行进度。无论是单个循环、嵌套循环,还是多线程处理,tqdm都能够大幅提升我们代码的可读性和可维护性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2142546.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Git:Git管理

目录 Git 文件管理检测文件状态 status跟踪新文件 add提交更新 commit撤销提交 Commit Git 校验和历史查看 log版本回退 resetgit 忽略文件 Git 分支管理Git 提交对象Git master分支Git 分支管理本地分支管理远程分支管理分支hotfix处理 Git 工作流常见分支冲突处理分支合并冲突…

形象化展示numpy.stack

https://numpy.org/doc/stable/reference/generated/numpy.stack.html#numpy.stack 1. 一维数组 import numpy as npa np.arange(4) b np.arange(4) c np.stack([a,b]) d np.stack([a,b], axis1) print(a -->, a.shape,:\n, a) print(b -->, b.shape,:\n, b) print…

ICM20948 DMP代码详解(25)

接前一篇文章&#xff1a;ICM20948 DMP代码详解&#xff08;24&#xff09; 上一回讲到了inv_icm20948_load_firmware函数&#xff0c;对于大体功能进行了介绍&#xff0c;本回深入其具体实现代码细节。为了便于理解和回顾&#xff0c;再次贴出相关代码&#xff1a; //Setup Iv…

【个人博客hexo版】hexo安装时会出现的一些问题

项目场景&#xff1a; 项目场景&#xff1a;在完成了GitHub仓库和git的连接之后&#xff0c;就要新建一个文件夹&#xff08;例如hexo blog&#xff09;进行下一步hexo的使用 问题描述 例如&#xff1a;如图所示 原因分析&#xff1a; 这些error不用看它到底是什么&#xf…

Chrome谷歌浏览器登录账号next无反应

文章目录 问题描述 我们的Chrome浏览器在更新之后&#xff0c;会出现登录谷歌账号的时候&#xff0c;当你输入你的谷歌邮箱之后&#xff0c;点击 n e x t next next,也就是下一步的时候&#xff0c;页面没有反应&#xff0c;也就是没有跳转到输入密码的页面。 分析 根据logs里…

CLIP模型也能处理点云信息(论文复现)

CLIP模型也能处理点云信息&#xff08;论文复现&#xff09; 本文所涉及所有资源均在传知代码平台可获取 文章目录 CLIP模型也能处理点云信息&#xff08;论文复现&#xff09;概述模型结构模型总览图点云的投影视图间适配器 演示效果零样本投影少样本投影 核心逻辑使用方式部署…

Mamba环境配置教程【自用】

1. 新建一个Conda虚拟环境 conda create -n mamba python3.102. 进入该环境 conda activate mamba3. 安装torch&#xff08;建议2.3.1版本&#xff09;以及相应的 torchvison、torchaudio 直接进入pytorch离线包下载网址&#xff0c;在里面寻找对应的pytorch以及torchvison、…

VTD激光雷达(5)——05_OptiX_GPU

文章目录 前言一、总结 前言 一、 1 2 3 总结

随着访问范围的扩大 OpenAI o1-mini 现已向免费用户开放

上周&#xff0c;OpenAI 展示了其最新的大型语言模型&#xff08;LLM&#xff09;–OpenAI o1及其小兄弟 OpenAI o1-mini。该公司在公告中称&#xff0c;Plus 和 Team 用户可在公告发布之日起访问该模型。企业和教育用户将在本周获得该模型&#xff0c;而免费用户最终将获得 o1…

线性代数之QR分解和SVD分解

文章目录 1.QR分解Schmidt正交化Householder变换QR分解的应用 2. 求矩阵特征值、特征向量的基本方法3.SVD分解SVD分解的应用 参考文献 1.QR分解 矩阵的正交分解又称为QR分解&#xff0c;是将矩阵分解为一个正交矩阵Q和一个上三角矩阵R的乘积的形式。 任意实数方阵A&#xff0c…

2022高教社杯全国大学生数学建模竞赛C题 问题一(1) Python代码

目录 问题 11.1 对这些玻璃文物的表面风化与其玻璃类型、纹饰和颜色的关系进行分析数据探索 -- 单个分类变量的绘图树形图条形图扇形图雷达图Cramer’s V 相关分析统计检验列联表分析卡方检验Fisher检验绘图堆积条形图分组条形图分类模型Logistic回归随机森林import matplotlib…

SpaceX实现人类首次商业太空行走:航天历史新篇章

导语 2023年9月&#xff0c;SpaceX成功完成了人类历史上首次商业太空行走&#xff0c;这不仅是航天领域的重要突破&#xff0c;也是商业航天的一次重大胜利。这一事件标志着普通人离太空更近了一步&#xff0c;为未来的太空探索和火星移民奠定了基础。 一、背景介绍&#xff1a…

【MySQL】数据类型【mysql当中各自经典的数据类型的学习和使用】

目录 数据类型1数据类型分类2.数值类型2.1tinyint类型2.2bit类型2.3小数类型2.3.1float2.3.2decimal 3.字符串类型3.1char3.2varchar3.3char和varchar的对比 4.日期和时间类型5.enum和set5.1对enum和set进行插入5.2对enum和set进行查询 数据类型 数据类型本身就是mysql当中天然…

YOLOv8 的安装与训练

YOLOv8 是 YOLO 系列实时目标检测器中的较新迭代版本&#xff0c;在准确性和速度方面提供了前沿性能。基于之前 YOLO 版本的进步&#xff0c;YOLOv8 引入了新的特性和优化&#xff0c;使其成为各种应用中各种目标检测任务的理想选择。 一、安装显卡驱动与CUDA&#xff1a; 这个…

成都院干翻华东院成第一水电设计院!

注&#xff1a;文章来源于百度。版权归原作者所有。。 昨天中国电建发布了2024年中报&#xff0c;一般中报我是不怎么研究的&#xff0c;除非利益相关。 但今年电建的中报亮点很多&#xff0c;其中最显眼的就要数电建成都院在上半年干翻了传统龙头老大——华东院。 在净利润…

【C++】一次rustdesk-server编译记录

RustDesk Server 是一个开源的远程桌面解决方案&#xff0c;允许用户自托管自己的远程桌面服务器。该项目是免费且开源的&#xff0c;支持多种平台和环境。RustDesk Server 提供了 ID/Rendezvous 服务器和 Relay 服务器&#xff0c;以及一些 CLI 工具&#xff0c;方便用户进行远…

[Redis] Redis中的set和zset类型

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏: &#x1f9ca; Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 &#x1f355; Collection与…

动手学深度学习8.5. 循环神经网络的从零开始实现-笔记练习(PyTorch)

本节课程地址&#xff1a;从零开始实现_哔哩哔哩_bilibili 本节教材地址&#xff1a;8.5. 循环神经网络的从零开始实现 — 动手学深度学习 2.0.0 documentation (d2l.ai) 本节开源代码&#xff1a;...>d2l-zh>pytorch>chapter_multilayer-perceptrons>rnn-scratc…

【优化器】Optimizer——深度学习中的优化器是什么作用呢?

【优化器】Optimizer——深度学习中的优化器是什么作用呢&#xff1f; 【优化器】Optimizer——深度学习中的优化器是什么作用呢&#xff1f; 文章目录 【优化器】Optimizer——深度学习中的优化器是什么作用呢&#xff1f;1.什么是优化器&#xff1f;梯度下降法3. 常见的优化…

数据结构易错整理1

目录 数据结构的基础概念 数据结构基础概念 数据结构的逻辑结构 数据结构的物理结构 算法分析 时间复杂度 例题 数据结构的基础概念 数据结构基础概念 设计存储结构时不仅要存储格数据元素的值&#xff0c;而且还要存储数据元素之间的关系 数据结构具有特定关系的数据…