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.rhkb.cn/news/428174.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

每天五分钟计算机视觉:将人脸识别问题转换为二分类问题

本文重点 在前面的课程中,我们学习了两种人脸识别的网络模型,这两种人脸识别网络不能算是基于距离或者Triplet loss等等完成的神经网络参数的学习。我们比较熟悉的是分类任务,那么人脸识别是否可以转变为分类任务呢? 本节课程我们将介绍一种全新的方法来学习神经网络的参…

用友U8二次开发工具KK-FULL-*****-EFWeb使用方法

1、安装: 下一步,下一步即可。弹出黑框不要关闭,让其自动执行并关闭。 2、服务配置: 输入服务器IP地址,选择U8数据源,输入U8用户名及账号,U8登录日期勾选系统日期。测试参数有效性,提示测试通过…

利用 FastAPI 和 Jinja2 模板引擎快速构建 Web 应用

FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,它基于标准 Python 类型提示。FastAPI 支持异步编程,使得开发高性能的 Web 应用变得简单快捷。在本文中,我们将探讨如何使用 FastAPI 结合 Jinj…

VS code 查看 ${workspaceFolder} 目录指代路径

VS code 查看 ${workspaceFolder} 目录指代路径 引言正文 引言 在 VS code 创建与运行 task.json 文件 一文中我们已经介绍了如何创建属于自己的 .json 文件。在 VS code 中,有时候我们需要添加一些文件路径供我们导入自定义包使用,此时,我们…

OpenCV系列教程二:基本图像增强(数值运算)、滤波器(去噪、边缘检测)

文章目录 一、基本图像增强(数值运算)1.1 加法 (cv2.add)1.1.1 图像与标量相加(调节亮度)1.1.2 图像与图像相加(两个图像shape要相同)1.1.3 图像的加权加法(渐变切换&…

基于SpringBoot+Vue+MySQL的网上租赁系统

系统展示 用户前台界面 管理员后台界面 系统背景 在当前共享经济蓬勃发展的背景下,网上租赁系统作为连接租赁双方的重要平台,正逐步改变着人们的消费观念和生活方式。通过构建一个基于SpringBoot、Vue.js与MySQL的网上租赁系统,我们旨在为用户…

python线程(python threading模块、python多线程)(守护线程与非守护线程)

文章目录 Python多线程入门1. Python多线程概述2. threading模块基础- Thread 类: 这是一个代表线程的类。可以通过创建Thread类的实例来新建一个线程。- Lock 类: 在多线程环境中,为了防止数据错乱,通常需要用到锁机制。Lock类提供了基本的锁功能&#…

本地搭建我的世界服务器(JAVA)简单记录

网上参考教程挺多的,踩了不少坑,简单记录一下,我做的是一个私人服务器,就是和朋友3、4个人玩。 笨蛋 MC 开服教程 先放一个比较系统和完整的教程,萌新可用,这个教程很详细,我只是记录一下自己的…

【C++】list容器的基本使用

一、list是什么 list的底层结构是带头双向循环链表。 相较于 vector 的连续线性空间,list 就显得复杂很多,它是由一个个结点构成,每个结点申请的空间并不是连续的,它的好处是每次插入或删除一个数据,就配置或释放一个…

禁忌搜索算法(TS算法)求解实例---旅行商问题 (TSP)

目录 一、采用TS求解 TSP二、 旅行商问题2.1 实际例子:求解 6 个城市的 TSP2.2 **求解该问题的代码**2.3 代码运行过程截屏2.4 代码运行结果截屏(后续和其他算法进行对比) 三、 如何修改代码?3.1 减少城市坐标,如下&am…

游戏如何对抗定制挂

近年来,游戏安全对抗强度相比以往更加激烈,具体表现在“定制挂”趋势显著。在近期收集的近万款外挂样本中,定制挂约占比78%,常见的内存修改器、变速器等通用作弊手段占比正在下降。 所谓定制挂,是指针对某款游戏单独开…

初写MySQL四张表:(2/4)

今天,我们来写第二张表。因着这四张表以及后续有相应的拓展,这四张环环相扣,所以还未写出第一张表的同学,可以看完第一张表,再来此处: 初写MySQL四张表:(1/4)-CSDN博客 好,今日表格有三张&…

easy-es动态索引支持

背景 很多项目目前都引入了es,由于es弥补了mysql存储及搜索查询的局限性,随着技术的不断迭代,原生的es客户端使用比较繁琐不直观,上手代价有点大,所以easy-es框架就面世了,学习成本很低,有空大…

记忆化搜索专题——算法简介力扣实战应用

目录 1、记忆化搜索算法简介 1.1 什么是记忆化搜索 1.2 如何实现记忆化搜索 1.3 记忆化搜索与动态规划的区别 2、算法应用【leetcode】 2.1 题一:斐波那契数 2.1.1 递归暴搜解法代码 2.1.2 记忆化搜索解法代码 2.1.3 动态规划解法代码 2.2 题二&#xff1…

vue-使用refs取值,打印出来是个数组??

背景: 经常使用$refs去获取组件实例,一般都是拿到实例对象,这次去取值的时候发现,拿到的竟然是个数组。 原因: 这是vue的特性,自动把v-for里面的ref展开成数组的形式,哪怕你的ref名字是唯一的&#xff01…

后台数据管理系统 - 项目架构设计-Vue3+axios+Element-plus(0916)

接口文档: https://apifox.com/apidoc/shared-26c67aee-0233-4d23-aab7-08448fdf95ff/api-93850835 接口根路径: http://big-event-vue-api-t.itheima.net 本项目的技术栈 本项目技术栈基于 ES6、vue3、pinia、vue-router 、vite 、axios 和 element-plus http:/…

6.C++程序中的基本数据类型

数据类型是指在C中用于声明不同类型变量或函数的一个系统或抽象或者是一个分类,它决定了变量存储占用的内存空间以及解析存储的位模式。其实数据类型可以理解为固定内存大小的别名,是创建变量的模具,具体使用哪种模具(包括自定义&…

Python安装不再难!全平台保姆级教程带你轻松搞定!

Python介绍 Python是一种功能强大且灵活的编程语言,被广泛应用于各个领域。以下是Python在不同应用领域的一些常见用途: 网络开发 Python提供了丰富的库和框架,使其成为网络开发的理想选择。诸如Django、Flask和Pyramid等框架可以帮助开发人员…

一张图解析FastAdmin中的表格列表(bootstrap-table)的功能(备份)

功能描述 请根据图片上的数字索引查看对应功能说明。 1.菜单名称和描述 默认生成的CRUD是没有菜单名称和描述显示的,如果需要显示则可以修改权限管理->菜单规则,给对应菜单的添加上备注信息后即可显示,支持HTML 2.TAB过滤选项卡 在一键…

Linux之CentOS 7.9-Minimal部署Oracle 11g r2 安装实测验证(桌面模式)

前言: 发个之前的库存… Linux之CentOS 7.9-Minimal部署Oracle 11g r2 安装实测验证(桌面模式) 本次验证的是CentOS_7_Minimal-2009桌面模式来部署Oracle 11g r2,大家可根据自身环境及学习来了解。 环境:下载地址都给你们超链好了 1、Linux系统镜像包: 1.1 CentOS-7-x86_…