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

news2024/9/20 21:28:52

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

1.tqdm.auto 的基本用法

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

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

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

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

    from tqdm.auto import tqdm
    import time
    
    def 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 time
    
    for 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 time

for 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 time

progress_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 tqdm

tqdm.pandas()  # 启用 tqdm for pandas

df = pd.DataFrame({'a': range(1000)})
df['b'] = df['a'].progress_apply(lambda x: x**2)
  1. 结合文件下载
    tqdm 也可以用于显示文件下载进度。
import requests
from tqdm.auto import tqdm

url = "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 time

for 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.coloradmin.cn/o/2150144.html

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

相关文章

【刷题】杨辉三角

目录 杨辉三角题目描述解题思路解题代码 相同的树题目描述解题思路 二叉树的层序遍历题目描述解题思路解题代码从底层层序遍历 二叉树的最近公共祖先题目描述解题思路 从前序与中序遍历序列构建二叉树题目描述解题思路 从后序与中序遍历序列构建二叉树题目描述解题思路 根据二叉…

SAP-MM-变式的设置

1、报表变式 业务需求: 业务人员查询报表时有些值是需要经常输入的,能不能设置成默认值?能不能设置成每次进入报表不选择变式直接是默认值? 解决措施: 1、事物码:MB51 以MB51物料凭证查询为例,其他报表自行举一反三 2、设置变式 首先进入MB51入下图 上图是没有选…

任天堂发言人:不会透露起诉《幻兽帕鲁》开发商细节

任天堂在昨天突然宣布将起诉《幻兽帕鲁》开发商 Pocketpair,除了引起许多玩家不满外,更多的是所有人的疑惑:因为实际上大家内心里觉得任天堂出手是理所当然的,但是为什么是在游戏发布数月后才选择起诉?此次诉讼是“专利…

吴恩达深度学习笔记:卷积神经网络(Foundations of Convolutional Neural Networks)2.1-2.2

目录 第四门课 卷积神经网络(Convolutional Neural Networks)第二周 深度卷积网络:实例探究(Deep convolutional models: case studies)2.1 为什么要进行实例探究?(Why look at case studies?&…

Python编码系列—Python外观模式:简化复杂系统的快捷方式

🌟🌟 欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中…

生信初学者教程(八):数据收集

文章目录 数据分布表达谱数据最终数据分布自动下载GSE14520下载GSE149614下载其它数据在确定研究疾病为肝细胞癌**(Liver Hepatocellular Carcinoma: HCC)**后,系统地进行了文献回顾,专注于搜索与HCC相关的荟萃分析文章,以获取该领域的研究动态和已有成果。为了支持的研究…

卡车配置一键启动无钥匙进入手机控车

‌ 卡车智能一键启动无钥匙进入手机控车,通过手机应用程序与汽车内置硬件、软件的无线通信,实现对汽车的远程控制‌。 卡车改装一键启动的步骤包括安装门把手的感应装置、拆卸仪表台和门板,取出内部的待接线束,并将一键启动…

MySQL高阶1875-将工资相同的雇员分组

目录 题目 准备数据 分析数据 题目 编写一个解决方案来获取每一个被分配到组中的雇员的 team_id 。 返回的结果表按照 team_id 升序排列。如果相同,则按照 employee_id 升序排列。 这家公司想要将 工资相同 的雇员划分到同一个组中。每个组需要满足如下要求&a…

springboot结合p6spy进行SQL监控

1.学习p6spy的相关链接 英文文档:Integrating P6Spy — p6spy 3.9.2-SNAPSHOT documentationhttps://p6spy.readthedocs.io/en/latest/integration.html github链接:GitHub - p6spy/p6spy: P6Spy is a framework that enables database data to be sea…

solana项目counter,测试过程中执行报错记录分享

跟随HackQuest部署counter项目,使用 Solana 官方提供的 playgroud 。这个平台让我们的部署和测试过程变得更加简便高效。 合约代码 lib.rs中复制以下代码 use anchor_lang::prelude::*; use std::ops::DerefMut;declare_id!("CVQCRMyzWNr8MbNhzjbfPu9YVvr97…

12种常见的华为杯数学建模竞赛matlab代码(建议收藏)

1.使用神经网络模型(向量量子化方法LVQ)解决分类/预测问题 clc;clear;​% 第一类蝗虫的触角和翅膀p1 [1.24, 1.27; 1.36, 1.74; 1.38, 1.64; 1.38, 1.82; 1.38, 1.90; 1.40, 1.70; 1.48, 1.82; 1.54, 1.82; 1.56, 2.08];​% 第二类蝗虫的触角和翅膀p2 [1.14, 1.82;…

电脑视频编辑常用软件:12个在线视频剪辑方法,这份免费攻略真实在!

您是否曾为视频剪辑而感到困惑,不知从何入手?面对众多的视频编辑软件和复杂的操作流程,怎样才能快速上手,制作出高质量的视频呢?许多内容创作者在编辑或上传较长视频时,常常遭遇到时间和质量的困扰。为了解…

利用Metasploit进行信息收集与扫描

Metasploit之信息收集和扫描 在本文中,我们将学习以下内容 使用Metasploit被动收集信息 使用Metasploit主动收集信息 使用Nmap进行端口扫描 使用db_nmap方式进行端口扫描 使用ARP进行主机发现 UDP服务探测 SMB扫描和枚举 SSH版本扫描 FTP扫描 SMTP枚举 …

【计算机网络 - 基础问题】每日 3 题(十三)

✍个人博客:Pandaconda-CSDN博客 📣专栏地址:http://t.csdnimg.cn/fYaBd 📚专栏简介:在这个专栏中,我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞👍收藏&…

关于安卓App自动化测试的一些想法

安卓App自动化一般使用PythonAppium。页面元素通常是使用AndroidStudio中的UI Automator Viewer工具来进行页面元素的追踪。但是这里涉及到一个问题就是,安卓apk在每次打包的时候,会进行页面的混淆以及加固,所以导致每次apk打包之后会出现页面…

Java客户端SpringDataRedis(RedisTemplate使用)

文章目录 ⛄概述⛄快速入门❄️❄️导入依赖❄️❄️配置文件❄️❄️测试代码 ⛄数据化序列器⛄StringRedisTemplate⛄RedisTemplate的两种序列化实践方案总结 ⛄概述 SpringData是Spring中数据操作的模块,包含对各种数据库的集成,其中对Redis的集成模…

python获取滑块验证码需要滑动的距离

我们以这个网站为例: http://120.86.191.138/hbgs/zwgk/dirData.do?dirId402881204e959150014e959f42f30014&subjectId93e889f2501d3fe8015024305bdf0efc 往后点到第四页后会出现验证码 一.获取到背景图片和缺口图片 我们发现图片是base64格式通过API直接发送 二.识别缺…

铲屎官进!宠物空气净化器真的有用吗?哪款去浮毛效果好

国庆小长假就要来了,别人都在苦恼抢票问题,而我在想会不会被我妈赶出家门... 毕业后我就留在了广州上班,独自一人租房难免会感觉孤独,就养了一只小猫和我作伴。这次放假这么久,我不放心留它一个人在家,也没…

vulhub搭建漏洞环境docker-compose up -d命令执行报错以及解决方法汇总

在利用vulhub靶场搭建环境进行漏洞复现时,我们通常要使用这一步命令: docker-compose up -d 但是经常报错,今天我们来说几个常见的报错以及解决方法: 1.报错提示: ERROR: Couldnt connect to Docker daemon at httpdoc…

基于atlas环境下YOLOV7的睡岗识别

做到这里,其实只是想探索下新的检测框架、探索下atlas下ACL的推理方式。整个过程持续了3-4周把,回顾一下,感觉还是需要一些技巧才能拿下,如果没有任何经验的是断难搞定此代码的。主要基于华为的官方例子,里面修改了原始…