from tqdm.auto import tqdm用法详细介绍

tqdm 是一个 Python 库,用于在长时间运行的任务中显示进度条。tqdm.autotqdm 的一个版本,能够自动适配输出环境(如 Jupyter Notebook、命令行等),以确保进度条在各种环境下显示正确。下面是 tqdm.auto 的详细用法介绍及示例。

1.tqdm.auto 的基本用法

  1. 基础用法
    tqdm 可以很方便地用于显示循环的进度条。

    from tqdm.auto import tqdm
    import timefor i in tqdm(range(100)):time.sleep(0.1)  # 模拟一个耗时操作
    

    上面代码会显示一个进度条,每次循环迭代时进度条都会更新,直到任务完成。
    在这里插入图片描述

  2. 使用在函数中
    你可以将 tqdm 应用于任何可迭代对象,包括列表、生成器等。

    from tqdm.auto import tqdm
    import timedef process_data(data):for item in tqdm(data):time.sleep(0.1)  # 模拟数据处理
    data = range(50)
    process_data(data)
    

在这里插入图片描述

  1. 自定义进度条参数
    tqdm 允许定制进度条的显示格式,包括进度条的描述、步长、刷新率等。

    from tqdm.auto import tqdm
    import timefor i in tqdm(range(100), desc="Processing", unit="iter", ncols=100, colour="green"):time.sleep(0.05)  # 模拟一个耗时操作
    

在这里插入图片描述

参数解释:

  • desc: 进度条的描述文字,默认不显示。
  • unit: 步长单位,默认是 ‘it’。
  • ncols: 进度条的宽度,单位为字符。
  • colour: 进度条的颜色,默认颜色由环境决定。
  1. 嵌套进度条
    当处理嵌套循环时,可以使用多层 tqdm 进度条。
from tqdm.auto import tqdm
import timefor i in tqdm(range(3), desc="Outer Loop", colour="green"):for j in tqdm(range(100), desc="Inner Loop", leave=False, colour="blue"):time.sleep(0.01)

外层循环会显示为一个外部进度条,而内层循环的进度条会显示为内部的子进度条。
在这里插入图片描述

  1. 手动更新进度条
    对于不使用循环的情况,也可以手动更新进度条。
from tqdm.auto import tqdm
import timeprogress_bar = tqdm(total=100)
for i in range(10):time.sleep(0.5)  progress_bar.update(10) # 以10%的速度更新进度条
progress_bar.close()
  • total: 进度条的总数目。
  • update(n): 手动增加进度条的进度,n 是步长。
    在这里插入图片描述
  1. 结合 Pandas
    tqdm 可以结合 Pandas 显示进度条,例如在 applygroupby 操作中。
import pandas as pd
from tqdm.auto import tqdmtqdm.pandas()  # 启用 tqdm for pandasdf = pd.DataFrame({'a': range(1000)})
df['b'] = df['a'].progress_apply(lambda x: x**2)
  1. 结合文件下载
    tqdm 也可以用于显示文件下载进度。
import requests
from tqdm.auto import tqdmurl = "https://example.com/largefile.zip"
response = requests.get(url, stream=True)
total_size = int(response.headers.get('content-length', 0))with open("largefile.zip", 'wb') as file, tqdm(desc="Downloading", total=total_size, unit='B', unit_scale=True, unit_divisor=1024
) as bar:for data in response.iter_content(chunk_size=1024):file.write(data)bar.update(len(data))

2. tqdm 常见入参

  1. iterable: 任何可迭代对象,如 range()、列表、生成器等。

    • 类型: iterable
    • 默认值: None
    • 说明: 表示需要显示进度条的对象。
  2. desc: 进度条左侧的描述文字。

    • 类型: str
    • 默认值: None
    • 说明: 为进度条加上说明文本,可以用于描述当前任务。
    tqdm(range(100), desc="Loading")
    
  3. total: 迭代的总步数。

    • 类型: int
    • 默认值: None
    • 说明: 如果没有提供可迭代对象(即手动更新进度),需要指定总步数。
    tqdm(total=100)
    
  4. leave: 是否在任务完成后保留进度条。

    • 类型: bool
    • 默认值: True
    • 说明: True 表示任务完成后进度条保持在屏幕上;False 表示任务完成后清除进度条。
    tqdm(range(100), leave=False)
    
  5. ncols: 进度条的宽度(字符数)。

    • 类型: int
    • 默认值: None(自动调整宽度)
    • 说明: 控制进度条在屏幕上显示的宽度。
    tqdm(range(100), ncols=80)
    
  6. mininterval: 最小刷新间隔时间(秒)。

    • 类型: float
    • 默认值: 0.1
    • 说明: 控制进度条刷新的最小时间间隔,避免过于频繁刷新,减少系统开销。
    tqdm(range(100), mininterval=0.5)
    
  7. maxinterval: 最大刷新间隔时间(秒)。

    • 类型: float
    • 默认值: 10
    • 说明: 设置进度条的最大刷新间隔时间。如果任务较长,可以设定一个上限,以确保定期刷新。
    tqdm(range(100), maxinterval=5)
    
  8. miniters: 最小更新步数。

    • 类型: int or float
    • 默认值: 1
    • 说明: 控制进度条更新的最小步长。例如,每 10 步才刷新一次。
    tqdm(range(100), miniters=10)
    
  9. ascii: 使用 ASCII 字符显示进度条(适用于不支持 Unicode 的终端)。

    • 类型: bool or str
    • 默认值: False
    • 说明: 使用 True 时,会用 ASCII 字符显示进度条。你也可以传入自定义的字符序列。
    tqdm(range(100), ascii=True)
    
  10. disable: 禁用进度条。

    • 类型: bool
    • 默认值: False
    • 说明: 设置为 True 时,禁用进度条(例如用于不需要显示进度条的环境中)。
    tqdm(range(100), disable=True)
    
  11. unit: 进度条步长单位。

    • 类型: str
    • 默认值: 'it'
    • 说明: 用于指示进度条的单位,例如字节、行、项等。
    tqdm(range(100), unit="B")
    
  12. unit_scale: 是否自动缩放单位。

    • 类型: bool or int or float
    • 默认值: False
    • 说明: 设置为 True 时,自动调整单位,如 1024 -> 1K。可以手动指定缩放倍数。
    tqdm(range(10000), unit_scale=True)
    
  13. unit_divisor: 单位缩放的基数。

    • 类型: int
    • 默认值: 1000
    • 说明: 控制单位缩放时的除数,常用于字节单位显示(如 1024)。
    tqdm(range(10000), unit="B", unit_scale=True, unit_divisor=1024)
    
  14. dynamic_ncols: 动态调整进度条宽度。

    • 类型: bool
    • 默认值: True
    • 说明: 进度条会根据终端窗口宽度动态调整长度。
    tqdm(range(100), dynamic_ncols=True)
    
  15. smoothing: 平滑速度的系数。

    • 类型: float
    • 默认值: 0.3
    • 说明: 用于计算平均速度的平滑因子,数值越小,更新越灵敏。
    tqdm(range(100), smoothing=0.1)
    
  16. colour: 设置进度条颜色。

    • 类型: str
    • 默认值: None
    • 说明: 可以设置进度条的颜色,例如 'green'
    tqdm(range(100), colour="green")
    

示例代码

from tqdm.auto import tqdm
import timefor i in tqdm(range(100), desc="Processing", total=100, unit="iter", ncols=100, leave=False, mininterval=0.5, ascii=True, colour="blue"):time.sleep(0.05)

通过这些参数,tqdm 可以非常灵活地定制进度条的显示方式。

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

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

相关文章

英飞凌 PSoC6 评估板 RT-Thread 开发环境搭建

本文介绍如何搭建基于 RT-Thread Studio IDE 工具的 PSoC6 RTT 评估板的开发环境,通过搭建一个简单的工程,将代码编译、下载到 PSoC6 RTT 开发板。 安装软件包 首先需要安装 RT-Thread Studio,如果你还没安装,可以点击这里下载安…

MySQL 中的 UTF-8 与 UTF8MB4:差异解析

在 MySQL 数据库中,字符集的选择对于数据的存储和处理至关重要。其中,UTF-8 和 UTF8MB4 是两个常见的字符集选项。那么,它们之间到底有什么区别呢? 一、字符集简介 UTF-8 UTF-8(8-bit Unicode Transformation Format&…

中伟视界:AI边端云一体化管控平台的特色功能介绍及其工作原理

在当前的数字化浪潮中,人工智能(AI)与物联网(IoT)技术逐渐渗透到各行各业,而如何在复杂、多层次的技术环境中高效管理和控制这些系统,成为了企业追求自动化、智能化发展的关键挑战。为了满足这种…

docker-compose up 报错:KeyError: ‘ContainerConfig‘

使用命令查看所有容器: docker ps -a 找到有异常的容器删除 docker rm {容器id} 后续发现还是会出现这种情况,尝试使用更高版本的docker-compose后解决

Java开发-面试题-0035-Spring代理方式有哪些

Java开发-面试题-0035-Spring代理方式有哪些 更多内容欢迎关注我(持续更新中,欢迎Star✨) Github:CodeZeng1998/Java-Developer-Work-Note (技术)微信公众号:CodeZeng1998 (生活&…

【Python报错已解决】SyntaxError invalid syntax

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 专栏介绍 在软件开发和日常使用中,BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…

怎么解除BitLocker对磁盘的加密?

BitLocker是一种Windows操作系统内置的加密功能,用于保护用户的数据安全。它通过对整个磁盘进行加密,防止数据被未经授权的用户访问。BitLocker主要用于保护笔记本电脑和台式机中的重要数据,尤其是在设备丢失或被盗的情况下。怎么解除BitLock…

【Redis入门到精通二】Redis核心数据类型(String,Hash)详解

目录 Redis数据类型 1.String类型 (1)常见命令 (2)内部编码 2.Hash类型 (1)常见命令 (2)内部编码 Redis数据类型 查阅Redis官方文档可知,Redis提供给用户的核心数据…

Redhat 7,8,9系(复刻系列) 一键部署Oracle19c rpm

Oracle19c前言 Oracle 19c 是甲骨文公司推出的一款企业级关系数据库管理系统,它带来了许多新的功能和改进,使得数据库管理更加高效、安全和可靠。以下是关于 Oracle 19c 的详细介绍: 主要新特性 多租户架构:支持多租户架构,允许多个独立的数据库实例在同一个物理服务器上…

鸿蒙开发之ArkUI 界面篇 十四 个人中心导航界面

鸿蒙要实现如图效果,代码简洁到令人难以置信: 整体布局是水平方向的,用row容器,左边是Image加载图标,中间是Text。右边也是Image加载图片,主轴子组件之间的距离用justifyContent(FlexAlign.SpaceBetween)&a…

MySQL 中的锁定粒度:理解与应用

在 MySQL 数据库的使用中,锁定粒度是一个至关重要的概念。它决定了数据库在并发控制中锁定的范围和程度,对数据库的性能和并发能力有着深远的影响。今天,我们就来深入了解一下 MySQL 中的锁定粒度是什么意思,并通过实际案例来更好…

C++自动寻径算法

测试 #include <iostream> #include "source/AStar.hpp"int main() {AStar::Generator generator;generator.setWorldSize({25, 25});generator.setHeuristic(AStar::Heuristic::euclidean);generator.setDiagonalMovement(true);generator.addCollision({1, …

如何搭建客户服务知识库?五项基本方法让你业务增长100%

在竞争激烈的市场环境中&#xff0c;优质的客户服务已成为企业脱颖而出的关键。而一个高效、全面的客户服务知识库&#xff0c;不仅能够提升客户满意度&#xff0c;还能显著降低客服团队的工作负担&#xff0c;促进业务的稳健增长。本文将介绍五项基本方法&#xff0c;帮助你搭…

头部姿态估计代码+教程

前言 头部姿态估计是计算机视觉中的一个具有挑战性的问题&#xff0c;因为它需要完成多个步骤。首先&#xff0c;我们需要在画面中定位人脸&#xff0c;然后识别出各种面部特征点。如今&#xff0c;当人脸正对摄像头时&#xff0c;识别人脸似乎是一个简单的任务。但问题在于&am…

使用sqoop将mysql数据导入到hive报错ClassNotFoundException、Zero date value prohibited、.MapRedTask等错误

第一个错误&#xff1a; Caused by: java.lang.ClassNotFoundException: org.apache.commons.lang.StringEscapeUtilsat java.net.URLClassLoader.findClass(URLClassLoader.java:381)at java.lang.ClassLoader.loadClass(ClassLoader.java:424)at sun.misc.Launcher$AppClass…

萌啦数据行业数据在哪看,萌啦ozon行业数据怎么看

在跨境电商的浪潮中&#xff0c;数据已成为商家决策的重要基石。萌啦Ozon数据行业分析板块&#xff0c;作为连接商家与市场动态的桥梁&#xff0c;为商家提供了丰富的行业洞察与精准的市场指导。本文将带您深入探索萌啦Ozon数据行业分析板块的功能&#xff0c;揭秘如何在这片数…

redis分布式锁(看门枸机制)

分布式锁确保在同一时间只有一个节点能获得对共享资源的独占访问权限&#xff0c;从而解决并发访问问题。 Redisson锁(简称看门狗) 它可以实现锁的延长&#xff0c;确保某个线程执行完才能让其他线程进行抢锁操作 引入看门狗机制后 如何使用&#xff1f; 1、引入依赖包 <…

搜索引擎onesearch3实现解释和升级到Elasticsearch v8系列(四)-搜索

搜索 搜索内容比较多&#xff0c;onesearch分成两部分&#xff0c;第一部分&#xff0c;Query构建&#xff0c;其中包括搜索词设置&#xff0c;设置返回字段&#xff0c;filter&#xff0c;高亮&#xff1b;第二部分分页和排序。第一部分是映射引擎负责&#xff0c;映射通用表…

MedPrompt:基于提示工程的医学诊断准确率优化方法

Medprompt&#xff1a;基于提示工程的医学诊断准确率优化方法 秒懂大纲解法拆解MedPrompt 提示词全流程分析总结创意视角 论文&#xff1a;Can Generalist Foundation Models Outcompete Special-Purpose Tuning? Case Study in Medicine 秒懂大纲 ├── 1 研究背景【描述背…

兴业小知识|法拍房你不知道的省钱小技巧~划走可就亏大了

如果说二手房市场是买卖双方之间的博弈&#xff0c;那法拍房市场则是纯买方的心理游戏。 在法拍房竞拍过程中&#xff0c;有人稳如泰山&#xff0c;有人坐立不安&#xff0c;每一次的出价都是对相互底线的一番试探。 有激进竞拍&#xff0c;拍出天价的&#xff0c;有一举夺魁…