【python第三方库】tqdm简介

article/2025/9/21 7:30:43

转载自: https://blog.csdn.net/wxd1233/article/details/118371404
仅作学习记录,侵删~

文章目录

  • 介绍
  • 安装
  • 使用方法
    • 1.传入可迭代对象
      • 使用`trange`
    • 2.为进度条设置描述
    • 3.手动控制进度
    • 4.tqdm的write方法
    • 5.手动设置处理的进度
    • 6.自定义进度条显示信息
  • 在深度学习中如何使用

介绍

Tqdm是 Python 进度条库,可以在 Python长循环中添加一个进度提示信息。用户只需要封装任意的迭代器,是一个快速、扩展性强的进度条工具库

安装

pip install tqdm

使用方法

1.传入可迭代对象

import time
from tqdm import *for i in tqdm(range(1000)):time.sleep(.01) #进度条每0.01s前进一次,总时间为1000*0.01=10s # 运行结果如下
100%|██████████| 1000/1000 [00:10<00:00, 93.21it/s]  

使用trange

trange(i)tqdm(range(i))的简单写法

from tqdm import trangefor i in trange(1000):time.sleep(.01)# 运行结果如下
100%|██████████| 1000/1000 [00:10<00:00, 93.21it/s]  

2.为进度条设置描述

在for循环外部初始化tqdm,可以打印其他信息:

import time
from tqdm import tqdmpbar = tqdm(["a","b","c","d"])for char in pbar:pbar.set_description("Processing %s" % char) # 设置描述time.sleep(1)  # 每个任务分配1s# 结果如下0%|          | 0/4 [00:00<?, ?it/s]Processing a:   0%|          | 0/4 [00:00<?, ?it/s]Processing a:  25%|██▌       | 1/4 [00:01<00:03,  1.01s/it]Processing b:  25%|██▌       | 1/4 [00:01<00:03,  1.01s/it]Processing b:  50%|█████     | 2/4 [00:02<00:02,  1.01s/it]Processing c:  50%|█████     | 2/4 [00:02<00:02,  1.01s/it]Processing c:  75%|███████▌  | 3/4 [00:03<00:01,  1.01s/it]Processing d:  75%|███████▌  | 3/4 [00:03<00:01,  1.01s/it]Processing d: 100%|██████████| 4/4 [00:04<00:00,  1.01s/it]

3.手动控制进度

import time
from tqdm import tqdmwith tqdm(total=200) as pbar:for i in range(20):pbar.update(10)time.sleep(.1)# 结果如下,一共更新了20次
0%|          | 0/200 [00:00<?, ?it/s]10%|| 20/200 [00:00<00:00, 199.48it/s]15%|█▌        | 30/200 [00:00<00:01, 150.95it/s]20%|██        | 40/200 [00:00<00:01, 128.76it/s]25%|██▌       | 50/200 [00:00<00:01, 115.72it/s]30%|███       | 60/200 [00:00<00:01, 108.84it/s]35%|███▌      | 70/200 [00:00<00:01, 104.22it/s]40%|████      | 80/200 [00:00<00:01, 101.42it/s]45%|████▌     | 90/200 [00:00<00:01, 98.83it/s] 50%|█████     | 100/200 [00:00<00:01, 97.75it/s]55%|█████▌    | 110/200 [00:01<00:00, 97.00it/s]60%|██████    | 120/200 [00:01<00:00, 96.48it/s]65%|██████▌   | 130/200 [00:01<00:00, 96.05it/s]70%|███████   | 140/200 [00:01<00:00, 95.25it/s]75%|███████▌  | 150/200 [00:01<00:00, 94.94it/s]80%|████████  | 160/200 [00:01<00:00, 95.08it/s]85%|████████▌ | 170/200 [00:01<00:00, 93.52it/s]90%|█████████ | 180/200 [00:01<00:00, 94.28it/s]95%|█████████▌| 190/200 [00:01<00:00, 94.43it/s]100%|██████████| 200/200 [00:02<00:00, 94.75it/s]

4.tqdm的write方法

bar = trange(10)
for i in bar:time.sleep(0.1)if not (i % 3):tqdm.write("Done task %i" % i)
# 结果如下Done task 0
0%|                                                                                           | 0/10 [00:10<?, ?it/s]0%|                                                                                           | 0/10 [00:00<?, ?it/s]10%|████████▎                                                                          | 1/10 [00:00<00:01,  8.77it/s]20%|████████████████▌                                                                  | 2/10 [00:00<00:00,  9.22it/s]Done task 30%|                                                                                           | 0/10 [00:10<?, ?it/s]30%|████████████████████████▉                                                          | 3/10 [00:00<00:01,  6.91it/s]40%|█████████████████████████████████▏                                                 | 4/10 [00:00<00:00,  9.17it/s]50%|█████████████████████████████████████████▌                                         | 5/10 [00:00<00:00,  9.28it/s]Done task 60%|                                                                                           | 0/10 [00:10<?, ?it/s]60%|█████████████████████████████████████████████████▊                                 | 6/10 [00:00<00:00,  7.97it/s]70%|██████████████████████████████████████████████████████████                         | 7/10 [00:00<00:00,  9.25it/s]80%|██████████████████████████████████████████████████████████████████▍                | 8/10 [00:00<00:00,  9.31it/s]Done task 90%|                                                                                           | 0/10 [00:11<?, ?it/s]90%|██████████████████████████████████████████████████████████████████████████▋        | 9/10 [00:01<00:00,  8.37it/s]
100%|██████████████████████████████████████████████████████████████████████████████████| 10/10 [00:01<00:00,  9.28it/s]

5.手动设置处理的进度

通过update方法可以控制每次进度条更新的进度:

from tqdm import tqdm 
import time
#total参数设置进度条的总长度
with tqdm(total=100) as pbar:for i in range(100):time.sleep(0.1)pbar.update(1)  #每次更新进度条的长度
#结果0%|          | 0/100 [00:00<?, ?it/s]1%|          | 1/100 [00:00<00:09,  9.98it/s]2%|| 2/100 [00:00<00:09,  9.83it/s]3%|| 3/100 [00:00<00:10,  9.65it/s]4%|| 4/100 [00:00<00:10,  9.53it/s]5%|| 5/100 [00:00<00:09,  9.55it/s]...100%|██████████| 100/100 [00:10<00:00,  9.45it/s]

除了使用with之外,还可以使用另外一种方法实现上面的效果:

from tqdm import tqdm
import time#total参数设置进度条的总长度
pbar = tqdm(total=100)
for i in range(100):time.sleep(0.05)#每次更新进度条的长度pbar.update(1)
#别忘了关闭占用的资源
pbar.close()

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

通过set_descriptionset_postfix方法设置进度条显示信息:

from tqdm import trange
from random import random,randint
import timewith trange(10) as t:for i in t:#设置进度条左边显示的信息t.set_description("GEN %i"%i)#设置进度条右边显示的信息t.set_postfix(loss=random(),gen=randint(1,999),str="h",lst=[1,2])time.sleep(0.1)

在深度学习中如何使用

下面是一段手写数字识别代码

import torch
import torch.nn as nn
import torch.optim as optim
import torch.nn.functional as F
from torch.utils.data import DataLoader
import torchvision.datasets as datasets
import torchvision.transforms as transforms
from tqdm import tqdm
class CNN(nn.Module):def __init__(self,in_channels=1,num_classes=10):super().__init__()self.conv1 = nn.Conv2d(in_channels=1,out_channels=8,kernel_size=(3,3),stride=(1,1),padding=(1,1))self.pool = nn.MaxPool2d(kernel_size=(2,2),stride=(2,2))self.conv2 = nn.Conv2d(in_channels=8,out_channels=16,kernel_size=(3,3),stride=(1,1),padding=(1,1))self.fc1 = nn.Linear(16*7*7,num_classes)def forward(self,x):x = F.relu(self.conv1(x))x = self.pool(x)x = F.relu(self.conv2(x))x = self.pool(x)x = x.reshape(x.shape[0],-1)x = self.fc1(x)return x# Set device
device = torch.device("cuda"if torch.cuda.is_available() else "cpu")
print(device)
# Hyperparameters
in_channels = 1
num_classes = 10
learning_rate = 0.001
batch_size = 64
num_epochs = 5# Load Data
train_dataset = datasets.MNIST(root="dataset/",train=True,transform=transforms.ToTensor(),download=True)
train_loader = DataLoader(dataset=train_dataset,batch_size=batch_size,shuffle=True)test_dataset = datasets.MNIST(root="dataset/",train=False,transform=transforms.ToTensor(),download=True)
test_loader = DataLoader(dataset=train_dataset,batch_size=batch_size,shuffle=True)# Initialize network
model = CNN().to(device)# Loss and optimizer
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(),lr=learning_rate)# Train Networkfor epoch in range(num_epochs):# for data,targets in tqdm(train_loadr,leave=False) # 进度显示在一行for data,targets in tqdm(train_loader):# Get data to cuda if possibledata = data.to(device=device)targets = targets.to(device=device)# forwardscores = model(data)loss = criterion(scores,targets)# backwardoptimizer.zero_grad()loss.backward()# gardient descent or adam stepoptimizer.step()# 如果不给train_loader加上tqdm会什么也不现实,加入后显示如下:
100%|██████████| 938/938 [00:06<00:00, 152.23it/s]
100%|██████████| 938/938 [00:06<00:00, 153.74it/s]
100%|██████████| 938/938 [00:06<00:00, 155.11it/s]
100%|██████████| 938/938 [00:06<00:00, 153.08it/s]
100%|██████████| 938/938 [00:06<00:00, 153.57it/s]
对应5个eopch的5个进度显示, 如果我们想要它显示在一行,在tqdm中添加leave=False参数即可
for data,targets in tqdm(train_loadr,leave=False) # 进度显示在一行注意
我们将tqdm加到train_loader无法得到索引,要如何得到索引呢?可以使用下面的代码
for index,(data,targets) in tqdm(enumerate(train_loader),total=len(train_loader),leave = True):

我们觉得还有点不太满足现在的进度条,我们得给他加上我们需要的信息,比如准确率,loss值,如何加呢?

for epoch in range(num_epochs):losses = []accuracy = []# for data,targets in tqdm(train_loadr,leave=False) # 进度显示在一行loop = tqdm(enumerate(train_loader), total =len(train_loader))for data,targets in loop:# Get data to cuda if possibledata = data.to(device=device)targets = targets.to(device=device)# forwardscores = model(data)loss = criterion(scores,targets)losses.append(loss)# backwardoptimizer.zero_grad()loss.backward()_,predictions = scores.max(1)num_correct = (predictions == targets).sum()running_train_acc = float(num_correct) / float(data.shape[0])accuracy.append(running_train_acc)# gardient descent or adam stepoptimizer.step()loop.set_description(f'Epoch [{epoch}/{num_epochs}]')loop.set_postfix(loss = loss.item(),acc = running_train_acc)

在这里插入图片描述
可以看到我们的acc和epoch 还有loss都打在了控制台中。以上就是相关tqdm的使用


http://chatgpt.dhexx.cn/article/ddvJFRnB.shtml

相关文章

【tqdm】进度条工具

tqdm 是一种呈现循环进度的工具包&#xff0c;本文讲讲述他的常用用法。 Example 1 假设FL框架中一共有10个用户&#xff0c;每次随机抽取5个用户进行更新&#xff0c;一共训练6个epochs&#xff0c;结合tqdm显示训练进程的代码框架如下&#xff1a; for epoch in range(6):…

tqdm模块

首先给大家看看tqdm源码中的一段注释&#xff1a; Decorate an iterable object, returning an iterator which acts exactly like the original iterable, but prints a dynamically updating progressbar every time a value is requested. 如果翻译过来&#xff1a; tqdm是…

python库tqdm是什么以及怎么用tqdm、trange和tqdm.notebook

1.是什么&#xff1f; 答案&#xff1a;用来显示进度条以及展示每一轮&#xff08;iteration)所耗费的时间。好抽象&#xff0c;我们重点看怎么用&#xff0c;从而明白是什么。 2.怎么用&#xff1f; 自行安装&#xff0c;如果是anaconda的话这个是默认已经安装了的。从而导入…

Py之tqdm:tqdm库的简介、安装、使用方法详细攻略

Py之tqdm&#xff1a;tqdm库的简介、安装、使用方法详细攻略 目录 tqdm库的简介 tqdm库的安装 tqdm库的使用方法 tqdm库的简介 显示循环的进度条的库。taqadum, تقدّم&#xff09;在阿拉伯语中的意思是进展。tqdm可以在长循环中添加一个进度提示信息&#xff0c;用户只…

tqdm安装

环境&#xff1a;win10 Python3.6 首先&#xff0c;直接使用pip安装&#xff1a;pip install tqdm &#xff0c;成功安装&#xff0c;但是导入不了tqdm进行使用。 import tqdm from tqdm import tqdm Traceback (most recent call last):File "D:\Anaconda3\lib\site-…

【PyTorch总结】tqdm的使用

文章目录 介绍安装使用方法1.传入可迭代对象使用trange2.为进度条设置描述3.手动控制进度4.tqdm的write方法5.手动设置处理的进度6.自定义进度条显示信息 在深度学习中如何使用 介绍 Tqdm 是 Python 进度条库&#xff0c;可以在 Python 长循环中添加一个进度提示信息。用户只需…

Python的Tqdm模块——进度条配置

tqdm官网地址&#xff1a;https://pypi.org/project/tqdm/ Github地址&#xff1a;https://github.com/tqdm/tqdm 简介 Tqdm 是一个快速&#xff0c;可扩展的Python进度条&#xff0c;可以在 Python 长循环中添加一个进度提示信息&#xff0c;用户只需要封装任意的迭代器 tqd…

tqdm 简介及正确的打开方式

tqdm 简介及正确的打开方式 查遍了网上资料&#xff0c;发现绝大中文的讲解全都是一手带过&#xff0c;还称详细&#xff0c;真是醉了&#xff0c;于是有该文&#xff0c;也算给自己做个笔记 1. 什么是tqdm&#xff1f; tqdm是一个快速的&#xff0c;易扩展的进度条提示模块&a…

tqdm库

tqdm库 文章目录 tqdm库如何安装如何使用1.基于迭代的进度条2.手动设置进度条 如何在Pandas中使用进度条如何在keras中使用进度条如何使用Notebook优化的进度条和层级进度条如何为文件存储设置进度条 简要介绍&#xff1a; tqdm是一个进度条可视化库&#xff0c;可以帮助我们监…

tqdm的使用和例子

1. tqdm的介绍 有时候在使用Python处理比较耗时操作的时候&#xff0c;为了便于观察处理进度&#xff0c;这时候就需要通过进度条将处理情况进行可视化展示&#xff0c;以便我们能够及时了解情况。 tqdm就能非常完美的支持和解决这些问题&#xff0c;可以实时输出处理进度而且…

一个被忽视的Python神器 - Tqdm

1. 什么是Tqdm 在日常工作和学习中&#xff0c;经常需要观察当前任务的执行进度&#xff0c;尤其是一个执行时间很长的任务&#xff0c;如果能够有进度条实时的显示当前的任务进度&#xff0c;那么将非常方便。 Tqdm 是一个快速&#xff0c;可扩展的Python进度条&#xff0c;…

tqdm 详解

文章目录 1. 简介2. 使用方法3. 实例 - 手写数字识别 1. 简介 tqdm是 Python 进度条库&#xff0c;可以在 Python长循环中添加一个进度提示信息。用户只需要封装任意的迭代器&#xff0c;是一个快速、扩展性强的进度条工具库。 2. 使用方法 传入可迭代对象 import time from…

idea方法注释的快捷键设置idea自定义注释设置

作者: yibox_qcby目录 效果展示配置步骤第一步第二步第三步第四步第五步第六步 完成 效果展示 配置步骤 第一步 第二步 第三步 第四步 注意第一行不是/** *** ClassName $className$* Description : 功能说明* $params$* Return : $return$* Author : 作者* Date : $DATE$ $…

idea中使用注释快捷键的问题及解决办法

问题描述 在idea中&#xff0c;使用注释快捷键会产生在注释前面会有缩进&#xff0c;这种缩进对于有着强迫症的我简直受不了 在按照网上其他的教程进行相关设置之后还是出现这样的问题 解决方法 我在使用中偶然发现idea注释的快捷键除了行注释&#xff08;Ctrl/&#xff…

idea文档注释的快捷键带参数

注意&#xff1a;为了大家能逐步了解 对这个小功能有个熟悉的过程 &#xff08;其实是作者比较懒 不想从头到尾重新截图 ) 发现问题会在文章未陆续更新 建议把整篇文章都看完 如果懒得看过程 看完开头后 文章最后代码直接复制进去就好了 输入 /** 按回车&#xff0c;当然这肯定…

IDEA设置类和方法的注释快捷键

一、设置类的注释快捷键 1.打开file->setting->Editor->Filr and Code Templates->Includes->File Header&#xff0c;如下图所示&#xff1a; 2.注释模板参考&#xff1a; /**1. description: 2. author: ManolinCoder3. time: ${DATE} */ 3.创建类时候自动…

修改idea快捷键注释样式

打开设置 找到Editor -> Code Style -> Java 以修改xxx.java文件注释样式&#xff0c;点击其它位置&#xff0c;修改其它语言注释样式 找到Code Generation 取消Line comment at first column和Block comment at first column&#xff0c;勾上Add a space at line commen…

idea 方法注释的快捷键设置

1.打开设置setting->Editor->Live Templates 2.然后点击号&#xff0c;选择第二个&#xff0c;设置一个自定义的组&#xff0c;输入名字&#xff0c;这里我叫mytemp 3.选定刚才创建的组&#xff0c;再次点击号&#xff0c;创建一个模板&#xff0c;重点&#xff0c;写模板…

IDEA的三种注释快捷键

一.行注释 1.1快捷键&#xff1a;Ctrl/ 1.2效果演示&#xff1a; 二.块注释 2.1快捷键&#xff1a;CtrlShift/ 2.2效果演示&#xff1a; 三.方法说明注释 3.1快捷键&#xff1a;输入/** ,点击“Enter”&#xff0c;自动根据参数和返回值生成注释模板

【IDEA】idea注释快捷键不生效

文章目录 配置注释快捷键1. 新建 template Group&#xff0c;我这里创建了一个名为 user 的模板组2.创建这个模板组里的快捷键3. 验证4. 成功啦 配置注释快捷键 1. 新建 template Group&#xff0c;我这里创建了一个名为 user 的模板组 2.创建这个模板组里的快捷键 3. 验证 发…