tqdm:python的简单可视化进度

news2024/12/26 14:44:20

tqdm:python的简单可视化进度

说明

​ 本篇文章的主要目的是快速上手使用,而不是解析源码。

目录结构

文章目录

    • tqdm:python的简单可视化进度
      • 1. 应用场景
      • 2. 库安装
      • 3. 方法速览
      • 4. 案例
      • 5. 总结

1. 应用场景

​ 进度条应用的场景很多,不过我最近一直在研究CV方向的内容,因此进度条主要还是用在可视化显示网络训练的流程。

2. 库安装

​ tqdm是python的一个第三方库,可以快速简单的实现进度条的可视化显示。

​ 安装方法很简单,Windows在cmd命令行窗口运行下面的命令即可:

pip install tqdm

3. 方法速览

tqdm对象创建

​ 这里我们主要使用到的方法是与库同名的方法,即tqdm

from tqdm import tqdm

​ 该方法的作用是创建一个“进度条对象”,其需要传入一个参数,通常来说这个参数为一个可迭代对象。比如:

# 1. range函数
bar = tqdm(range(10))
# 2. 列表
bar = tqdm(['a',1,2,3,4])
# 3. 字典
bar = tqdm({'k':1,'b':2})  # 不过迭代访问时访问的是key
# 4. torch里面的数据加载器(这也是我需要的)
train_bar = tqdm(train_loader)

​ 当创建了tqdm对象后,我们迭代时不再使用刚刚的可迭代对象,而是直接使用tqdm对象即可,如下所示:

# 导包
from tqdm import tqdm
# 1. 创建进度条对象
bar = tqdm(range(10))
# 2. 迭代访问
for i in bar:
	print(i)

​ 上述代码的运行结果为:

在这里插入图片描述

tqdm重要方法

​ 该对象具有一个很重要的方法,即tqdm.desc,该方法可以实现自定义显示进度条的内容。

​ 上面演示的代码,只是显示了进度条,如果我们想要进度条的内容格式为你好,这是我的进度条{}/{},其中两个中括号的内容分别为当前索引和总的数目。

​ 那么可以这么修改代码:

# 导包
from tqdm import tqdm
import  time
# 1. 创建进度条对象
bar = tqdm(range(10))
# 2. 显示
for e in bar:
    bar.desc = '你好,这是我的进度条 {}/{}'.format(e+1, 10)

​ 运行结果如下:

在这里插入图片描述

​ 值得再次提醒的是:迭代的对象一定要用tqdm对象,不然没有效果

注意点

​ 上面代码由于很短,因此会在非常短的时间内运行完毕,导致我们看不见进度条的变换,此时可以用time.sleep(0.5)方法来增加延时。

4. 案例

​ 下面给大家一个完整的演示代码:

# 导包
from tqdm import tqdm
import  time
# 1. 创建进度条对象
bar = tqdm(range(10))
# 3. 访问
for e in bar:
    bar.desc = 'hello,test {}/{}'.format(e+1, 10)
    time.sleep(0.5)

​ 结果如下gif图像所示:(我使用调试的方式录的屏)

在这里插入图片描述

5. 总结

​ 其实进度条的显示库还有很多,并且有很多库实现的进度条非常炫酷,大家可以去自己尝试尝试。

​ 不过通常来讲,写脚本,tqdm这样简单的进度条就够我们使用了。

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

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

相关文章

YOLOv8独家原创改进:独家首发最新原创XIoU_NMS改进点,改进有效可以直接当做自己的原创改进点来写,提升网络模型性能、收敛速度和鲁棒性

💡该教程为属于《芒果书》📚系列,包含大量的原创首发改进方式, 所有文章都是全网首发原创改进内容🚀 💡本篇文章为YOLOv8独家原创改进:独家首发最新原创XIoU_NMS改进点,改进有效可以直接当做自己的原创改进点来写,提升网络模型性能、收敛速度和鲁棒性。 💡对自己…

[RocketMQ] Producer发送消息的总体流程 (七)

单向发送: 把消息发向Broker服务器, 不管Broker是否接收, 只管发, 不管结果。同步发送: 把消息发向Broker服务器, 如果Broker成功接收, 可以得到Broker的响应。异步发送: 把消息发向Broker服务器, 如果Broker成功接收, 可以得到Broker的响应。异步所以发送消息后, 不用等待, 等…

css基础知识十:介绍一下CSS中的Grid网格布局?

一、是什么 Grid 布局即网格布局,是一个二维的布局方式,由纵横相交的两组网格线形成的框架性布局结构,能够同时处理行与列 擅长将一个页面划分为几个主要区域,以及定义这些区域的大小、位置、层次等关系 这与之前讲到的flex一维…

操作系统—内存管理

单片机是没有操作系统的,每次写完代码都是通过一些工具将程序直接烧录进去,这样程序才能跑起来。单片机的CPU是直接操作内存的物理地址。在这种情况下,要想在内存中同时运行两个程序是不可能的,程序会崩溃。那么操作系统为了解决这…

LLM相关的一些调研

Prompt Engine 可以参考该项目,该项目提供关于提示词书写的规则。由openai以及吴恩达完成。 https://github.com/datawhalechina/prompt-engineering-for-developers由于目前chatgpt 无法直接在国内访问,推荐在claude on slack上尝试。关于claude api h…

Leetcode:1035. 不相交的线、53. 最大子数组和(C++)

目录 1035. 不相交的线 题目描述: 实现代码与解析: 动态规划 原理解析: 53. 最大子数组和 题目描述: 实现代码与解析: 动态规划 原理思路: 1035. 不相交的线 题目描述: 在两条独立的水…

移动端永不过时的高薪技术岗位,原来是它……

随着 Android 设备的普及和应用领域的不断扩大,Android Framework 开发需求量将会持续增长,并且会越来越多地向行业、企业级应用和系统优化等方向发展。以下是一些 Android Framework 开发相关的应用场景: 1. 特定垂直领域的智能设备&#x…

Jmeter性能测试

一、jmeter多并发 1.线程设置: 线程数——多少个虚拟用户 ramp_up时间(秒)——时间,设置时间内将线程都跑完 循环次数——勾选永远,就一直跑,直到手动停止;输入数字,就是循环多少次 2.jmeter逻辑分支控制…

关于MySQL性能优化方案,掌握这一篇就够了!

目录 前言 一、设置索引 1、索引的优缺点: 2、给表列创建索引 3、查看索引 4、删除索引: 5、索引原理: 二、分类讨论 三、针对偶尔很慢的情况 1、 数据库在刷新脏页(flush) 2. 拿不到锁我能怎么办 四、针对一直都这…

力扣题库刷题笔记16--最接近的三数之和

1、题目如下: 2、个人Python代码实现 本题的思路应该与很早之前刷的第15题三数之和是一个思路: 1、先将数组排序,然后进行遍历数组 2、确定左指针、右指针 3、判断三个数之和是否接近目标值 4、重点是,为确保左右指针不是同一个元…

Transformer回归预测

一、Attention is all you need——李沐论文精读Transformer 论文地址: https://arxiv.org/pdf/1706.03762.pdf Transformer论文逐段精读【论文精读】 卷积神经网络对较长的序列难以建模,因为他每次看一个比较小的窗口,如果两个像素隔得比较…

6.STM32时钟系统

1.时钟系统框图: HSI:高速的内部时钟->8MHz;HSE:外部高速时钟->8MHz;PLL: 锁相环->用于倍频(放大频率);CSS:时钟监控系统(一旦检测到HSE(外部晶振)失败,将会自动切换系统时钟源HSI);LS…

高等数学函数的性质

(本文内容为个人笔记分享) 牛顿二项公式 ( x y ) n ∑ k 0 n C n k ⋅ x n − k y k (xy)^n\stackrel{n}{\sum\limits_{k0}}C^k_n\sdot x^{n-k}y^k (xy)nk0∑​n​Cnk​⋅xn−kyk. 映射 f : X → Y f:X\rightarrow Y f:X→Y, f f f 为 …

成功解决RuntimeError:Unable to find a valid cuDNN algorithm to run convolution

该错误有可能是由于GPU不足导致的 有两种解决方法: 方法一:指定device 在指定device时,没有指定具体的卡 只用了如下代码 device torch.device("cuda" if torch.cuda.is_available() else "cpu")默认使用了index0的卡&#xff0…

CppUTest——【由JUnit移植过来的】C++单元测试框架——的下载安装

C单元测试框架CppUTest的下载与安装 简介下载地址单元测试框架下载单元测试被测工程下载 安装安装Cygwin下载地址安装步骤手动安装CMake 编译单元测试框架CppUTest 导入到Virtual Studio准备条件根据VS版本选择导入对应的.sln文件 简介 CppUnit是【由JUnit移植过来的】C测试框…

每日一练 | 华为认证真题练习Day65

1、如果一个以太网数据帧的Length/Type0x8100,那么这个数据帧的载荷不可能是?(多选) A. ARP应答报文 B. OSPF报文 C. RSTP数据帧 D. STP数据帧 2、路由器某接口配置信息如下,则此端口可以接收携带哪个VLAN的数据包…

《C++ Primer》--学习8

vector 对象是如何增长的 当不得不获取新的内存空间时,vector 和 string 的实现通常会分配比新的空间需求更大的内存空间,容器预留这些空间作为备用,这样就不用每次添加新元素都重新分配容器的内存空间了 管理容器的成员函数 capacity 和 …

高速电路设计系列分享-带宽和动态范围

目录 概要 整体架构流程 技术名词解释 1.带宽 2.动态范围 小结 概要 提示:这里可以添加技术概要 本文继续熟悉一些基本概念。 在许多技术领域,我们习惯于把技术进步与更高的速率关联起来:从以太网到无线局域网再到蜂窝移动网络,数据通信的实质就是不断…

MySQL8.0(Win)的安装步骤

MySQL8.0(Win)的安装步骤 MySql8.0 安装网址MySql8.0 安装界面界面一界面二界面三界面四界面五界面六界面七界面八界面十界面十一 查看 MySql8.0 安装结果配置MySql8.0的环境变量Path使用命令行访问MySQL的安装结果使用命令行操作MySQL数据库显示MySQL中…

Fiddler 简单抓包

文章目录 一、Fiddler 简介二、下载 Fiddler三、功能介绍1、Filters2、Inspectors3、Automatic BreakPoints4、TextWizard5、其他常用功能 一、Fiddler 简介 Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设…