返回顶部
首页 > 资讯 > 后端开发 > Python >Python中tqdm的使用和例子
  • 310
分享到

Python中tqdm的使用和例子

2024-04-02 19:04:59 310人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录1. tqdm的介绍1.1 tqdm导入2. tqdm.tqdm()对可迭代对象进行封装2.1 语法2.2 例子2.3 带有参数的tqdm.tqdm()2.3.1 例子12.3.

1. tqdm的介绍

有时候在使用python处理比较耗时操作的时候,为了便于观察处理进度,这时候就需要通过进度条将处理情况进行可视化展示,以便我们能够及时了解情况。

tqdm就能非常完美的支持和解决这些问题,可以实时输出处理进度而且占用的CPU资源非常少,支持windowslinuxMac等系统,支持①循环处理、②多进程、③递归处理、还可以结合Linux的命令来查看处理情况,等进度展示。

1.1 tqdm导入

# 方法1
import tqdm

# 方法2
from tqdm import tqdm

建议使用方法1,因为方法1导入的是一个lib,而方法2导入的是tqdm.tqdm方法
使用方法2导入就没办法使用tqdm.trange()等方法了

2. tqdm.tqdm()对可迭代对象进行封装

2.1 语法

# 方法1
for i in tqdm.tqdm(可迭代对象):
	pass

# 方法2
for idx, i in enumerate(tqdm.tqdm(可迭代对象)):
	pass

对于可以迭代的对象都可以使用tqdm进行封装实现可视化进度,使用起来非常方便。

2.2 例子

import tqdm
import time

# 定义一个可迭代对象
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# 正常的遍历(没有进度条)
for idx, element in enumerate(a):
    print(f"No.{idx}: {element}")
    
# 使用tqdm对可迭代对象进行包装,实现进度条可视化
for idx, element in enumerate(tqdm.tqdm(a)):
    time.sleep(0.5)
    print(f"No.{idx}: {element}")

结果如下:

Q:为什么结果会一直新建一行?

A:这是因为每次的print内容都不一样,为了能够显示新的内容,所以会这样。

我们看下面这个程序,它因为没有控制台输出,所以进度条就很正常。

2.3 带有参数的tqdm.tqdm()

Q:进度条可以加一些其他信息吗?

A:当然可以,需要对tqdm进行一些参数调整

@staticmethod
def fORMat_meter(n, total, elapsed, ncols=None, prefix='', ascii=False, unit='it',
                 unit_scale=False, rate=None, bar_format=None, postfix=None,
                 unit_divisor=1000, initial=0, colour=None, **extra_kwargs):
  • iterable: 可迭代的对象, 在⼿动更新时不需要进⾏设置
  • desc: 字符串, 左边进度条描述⽂字
  • total: 总的项⽬数
  • leave: bool值, 迭代完成后是否保留进度条
  • file: 输出指向位置, 默认是终端, ⼀般不需要设置
  • ncols: 调整进度条宽度, 默认是根据环境⾃动调节长度, 如果设置为0, 就没有进度条, 只有输出的信息
  • unit: 描述处理项⽬的⽂字, 默认是it, 例如: 100 it/s, 处理照⽚的话设置为img ,则为 100 img/s
  • unit_scale: ⾃动根据国际标准进⾏项⽬处理速度单位的换算, 例如 100000 it/s >> 100k it/s
  • colour: 进度条颜色

2.3.1 例子1

import tqdm
import time
d = {'loss':0.2,'learn':0.8}

"""
    desc设置名称
    ncols设置进度条长度 -> 建议设置在100以内
    postfix以字典形式传入详细信息
"""
for i in tqdm.tqdm(range(50),desc='名称',ncols=100,postfix=d):
    time.sleep(0.1)
    pass

其中xxxit/s表示每秒迭代的次数

2.3.2 例子2

import tqdm
import time

iter_object = range(10, 21)
pbar = tqdm.tqdm(iter_object, 
                 total=len(iter_object),
                 leave=True, 
                 ncols=100, 
                 unit="个", 
                 unit_scale=False, 
                 colour="red")

for idx, element in enumerate(pbar):
    time.sleep(0.5)
    pbar.set_description(f"No.{idx}")
    pbar.set_postfix({"正在处理的元素为": element})

3. 自定义进度条显示信息

Q:我就是想print一些东西,可以吗?

A:当然可以,tqdm提供了两个个方法:

  1. set_description()
  2. ​​​​​​​set_postfix()

这两个方法就类似于print,可以在进度条中显示一些变动的信息

3.1 例子1

import tqdm
import time


# 在使用set_description时一般会创建一个tqdm.tqdm()对象
pbar = tqdm.tqdm(["a", "b", "c", "d", "e", "f", "g"])

for idx, element in enumerate(pbar):
    time.sleep(1)
    pbar.set_description(f"No.{idx}: {element}")

3.2 例子2

import tqdm
import time
import random

epochs = 150

# 在使用set_description()和set_postfix()时一般会创建一个tqdm.tqdm()对象
pbar = tqdm.tqdm(range(epochs), ncols=100)  # ncols设置进度条显示的字符长度,小了就显示不全了

for idx, element in enumerate(pbar):
    time.sleep(0.01)
    pbar.set_description(f"Epoch {idx}/{epochs}")
    pbar.set_postfix({"class": element}, loss=random.random(), cost_time = random.randrange(0, 100))

3.3 两种方法传参注意事项

set_descriptionset_postfix都用的kwargs传参,所以我们可以:

  1. 用字典传参 -> pbar.set_postfix({"key_1": "value_1", ...})
  2. 直接用关键字传参 -> pbar.set_postfix(key_1 = value_1, key_2 = value_2, ...)
  3. 混着用 -> pbar.set_postfix({"key_1": value_1, "key_2": value_2, ...}, key_3 = value_3, ...)

4. tqdm内置生成可迭代对象方法 —— trange()

除了tqdm.tqdm(range(xxx))这样的写法外,tqdm也提供了类似的方法,即tqdm.trange(xxx),例子如下:

import tqdm
import time

pbar = tqdm.trange(300, 400, 1)

for idx, element in enumerate(pbar):
    time.sleep(0.01)
    pbar.set_description(f"No.{idx} -> {element}")

5. 自定义方法更新进度

有时候我们不仅仅是通过一个for训练来更新进度条,我们也希望在做完某些操作后更新一次进度条,代码如下:

import tqdm
import time

with tqdm.tqdm(total=10) as bar:  # total为进度条总的迭代次数
    # 操作1
    time.sleep(1)
    # 更新进度条
    bar.update(1)  # bar.update()里面的数表示更新的次数,和optimizer.step方法类似
    
    # 操作2
    time.sleep(2)
    # 更新进度条
    bar.update(3)
    
    # 操作3
    time.sleep(1)
    # 更新进度条
    bar.update(6)  # 建议不要超过total

参考

  • https://www.jb51.net/article/218860.htm
  • Https://www.jb51.net/article/166648.htm
  • https://blog.csdn.net/qq_41554005/article/details/117297861

总结

到此这篇关于Python中tqdm使用的文章就介绍到这了,更多相关tqdm使用例子内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python中tqdm的使用和例子

本文链接: https://lsjlt.com/news/120562.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python中tqdm的使用和例子
    目录1. tqdm的介绍1.1 tqdm导入2. tqdm.tqdm()对可迭代对象进行封装2.1 语法2.2 例子2.3 带有参数的tqdm.tqdm()2.3.1 例子12.3....
    99+
    2024-04-02
  • python tqdm用法及实例详解
    1、说明 tqdm是一个方便且易于扩展的Python进度条,可以在python执行长循环时在命令行界面实时地显示一个进度提示信息,包括执行进度、处理速度等信息,且可在一定程度上进行定制。 2、使用pip来安装tqdm...
    99+
    2022-06-02
    python tqdm
  • Python进度条tqdm的使用方法
    本篇内容介绍了“Python进度条tqdm的使用方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前言有时候在使用Python处理比较耗时操...
    99+
    2023-06-20
  • Python中如何将Tqdm与Asyncio结合使用呢
    目录简介困扰已有方法tqdm异步tqdm 概述将 tqdm 与异步集成简介 困扰 在 Python 中使用并发编程来提高效率对于数据科学家来说并不罕见。在后台观察各种子进程或并发线程...
    99+
    2023-05-12
    Python结合使用Tqdm Asyncio Python Tqdm Asyncio Python Tqdm Python Asyncio
  • Python使用RPC例子
    目录主要内容远程过程调用RPC常用与分布式计算,对应Python库名为rpyc;上段为rpyc服务端,下段为rpyc调用端;主要内容 所谓RPC,是远程过程调用(Remote Pro...
    99+
    2024-04-02
  • 如何使用tqdm在Python应用中显示进度
    本篇内容主要讲解“如何使用tqdm在Python应用中显示进度”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用tqdm在Python应用中显示进度”吧!阿拉米语,希伯来语和阿拉伯语中的闪米...
    99+
    2023-06-15
  • python如何使用tqdm制作进度条
    这篇文章主要介绍了python如何使用tqdm制作进度条,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。使用tqdm制作进度条TQDM库使你可以为Python和CLI创建快速地...
    99+
    2023-06-27
  • python ftp和sftp的例子
    python ftp 上传、下载文件#获取昨天日期TODAY = datetime.date.today() YESTERDAY = TODAY - datetime.timedelta(days=1)CURRENTDAY=YESTERDA...
    99+
    2023-01-31
    例子 python ftp
  • python中的torch.nn.Softmax() 用法和例子 dim=1 dim=2
    用法 torch.nn.Softmax() 是 PyTorch 中的一个类,用于实现 softmax 函数。softmax 函数是一种常用的激活函数,它可以将一个向量转换成一个概率分布,使得每个元素都...
    99+
    2023-09-04
    python 深度学习 机器学习
  • Python进度条tqdm的用法详解
    前言 有时候在使用Python处理比较耗时操作的时候,为了便于观察处理进度,这时候就需要通过进度条将处理情况进行可视化展示,以便我们能够及时了解情况。这对于第三方库非常丰富的Pyth...
    99+
    2024-04-02
  • 在Python使用yaml的几个例子
    python版本:2.7.5安装方法:pip install PyYaml“把变量写进yaml做配置文件,然后python脚本从yaml文件里面取到变量”的方法最近是在python编程里比较流行的配置项方法。yaml更加易读,而且通过缩进表...
    99+
    2023-01-31
    几个 例子 Python
  • Python中的鸭子类型和猴子补丁怎么使用
    本篇内容主要讲解“Python中的鸭子类型和猴子补丁怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python中的鸭子类型和猴子补丁怎么使用”吧!鸭子类型引用维基百科中的一段解释:鸭子类...
    99+
    2023-07-06
  • Python 协程的详细用法和例子
    从句法上看,协程与生成器类似,都是定义体中包含 yield 关键字的函数。可是,在协程中, yield 通常出现在表达式的右边(例如, datum = yield),可以产出值,也可以不产出 —— 如果 yield 关键字后面没有...
    99+
    2023-01-31
    例子 详细 Python
  • Python的迭代进度条Tqdm怎么用
    本篇内容介绍了“Python的迭代进度条Tqdm怎么用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Tqd...
    99+
    2024-04-02
  • 通过例子和解释演示Python中递归函数的使用方法
    Python递归函数的实例演示与讲解 递归函数是一种特殊的函数,它能够在函数体内调用自己。通过递归函数,我们可以将一个问题分解成一个或多个更小的同类型问题来解决。在本篇文章中,我们将通过具体的代码示例来演示和讲解Python递归...
    99+
    2024-02-02
    python 递归函数 演示讲解
  • python使用tqdm库实现循环打印进度条
    1. while 循环 Python的while循环可以打印进度条,可以使用tqdm这个库来实现。tqdm是一个用于在Python中添加进度条的库,它可以很容易地集成到while循环...
    99+
    2023-05-18
    python打印进度条 python循环打印
  • Python中子进程Timeout的使用
       Python中并没有Timeout模块,但是在程序中经常遇到需要超时控制的情况。    有两种思路去实现这种Timeout,其一是将需要做超时处理的代码块作为一个独立的子进程来处理,可将其另做一个包含main函数的.py文件。然后使...
    99+
    2023-01-31
    中子 进程 Python
  • 详解C++中string的用法和例子
    在C++中,string是一个表示字符串的标准库类。它提供了许多成员函数和操作符,用于在字符串中执行各种操作。以下是一些常见的str...
    99+
    2023-08-16
    C++
  • Java 中Timer和TimerTask 定时器和定时任务使用的例子
    这两个类使用起来非常方便,可以完成我们对定时器的绝大多数需求Timer类是用来执行任务的类,它接受一个TimerTask做参数Timer有两种执行任务的模式,最常用的是schedule,它可以以两种方式执行任务:1:在某个时间(Data),...
    99+
    2023-05-31
    timertask 定时器 tim
  • Python中的类和方法使用举例
    1.类的属性 成员变量对象的创建创建对象的过程称之为实例化,当一个对象被创建后,包含三个方面的特性对象聚丙属性和方法,句柄用于区分不同的对象,对象的属性和方法,与类中的成员变量和成员函数对应,obj = MyClass()创建类的一个实例,...
    99+
    2023-01-31
    方法 Python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作