Python 进度显示工具(tqdm)

news2024/11/25 11:49:53

tqdm 是一个进度显示工具,当任务执行的等待时间较长时,通过tqdm模块可以模拟出一个进度条,由此可以看到任务执行进度,获得更好的体验。

文章目录

  • 一、tqdm的安装
  • 二、tqdm的使用
    • 2.1 基于可迭代对象
    • 2.2 手动进度更新
    • 2.3 命令行模式

一、tqdm的安装

tqdm是一个第三方模块,需要额外安装,可以使用pip install tqdm命令安装模块:

pip install tqdm

在这里插入图片描述

二、tqdm的使用

tqdm的使用非常简单,可以直接应用在迭代对象上,随着迭代过程自动更新进度,或者通过在迭代过程中手动调用.update()方法更新进度。甚至还可以应该在linux命令中。

2.1 基于可迭代对象

可迭代对象通常会放在for循环中进行迭代,为显示for循环的执行进度,只需要将可迭代对象放入tqdm()中,循环时即会显示进度条和完成全部迭代预计的剩余时间。为了计算任务进度并显示进度条,tqdm 函数要获取一个能使用 len 函数确定大小的可迭代对象,或者在参数(total)中指定预期的迭代总数。

示例:这里这里每次循环睡眠0.02秒,方便观察:

from tqdm import tqdm
from time import sleep

for i in tqdm(range(100)):
    sleep(0.02)

在这里插入图片描述

tqdm(range(N))还有一个特别优化过的写法trange(N),上面的代码也可以写成:

from tqdm import trange
from time import sleep

for i in trange(100):
    sleep(0.02)

在这里插入图片描述

2.2 手动进度更新

tqdm还可以手动更新,将其对象赋给一个变量,然后调用.update(N)方法来更新进度,tqdm()有个可选的参数设置迭代总数,然后通过update方法进行累加,每次执行update都会打印一次当前进度。

示例:新建一个tqdm实例,total=100表示迭代总数为100

percent = tqdm(total=100)

在这里插入图片描述

调用update(N)方法,表示完成N次迭代,进度条则会显示对应的百分比

percent.update(1)

在这里插入图片描述

再次调用会进行累加:

percent.update(90)

在这里插入图片描述

完成后记得调用close()方法关闭对象,否则可能遇到显示多个进度条的情况:

percent.close()

在这里插入图片描述

你也可以直接用上下文管理器with来自动关闭tqdm对象,2.1的示例可以改写如下,这里每次循环后主动调用percent.update(1)来更新进度:

from tqdm import tqdm
from time import sleep

with tqdm(total=100) as percent:
    for I in range(100):
        sleep(0.02)
        percent.update(1)

在这里插入图片描述

2.3 命令行模式

在命令行中使用tqdm时,只要通过管道将要监控的命令连接起来:

cat db_backup.sql | tqdm | mysql test

在这里插入图片描述

这里由于没有提供total参数,所以在运行过程中无法计算完成比例,仅仅显示了迭代的次数,示例中的158it就是迭代次数(it是单位)。

我们给tqdm增加几个参数,–bytes表示统计处理的字节数,–total 表示文件的总大小(用操作系统命令查看),这两个参数结合起来可以计算处理进度。–desc Importing…进度条前的描述符,可以自行定义:
cat db_backup.sql | tqdm --bytes --total 23886278 --desc Importing… | mysql test
在这里插入图片描述
对于进度条跳动比较突兀的情况,你还可以增加一个–mininterval=0.01 参数来指定进度条更新间隔,让其动画更加流畅。

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

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

相关文章

【SpringBoot】mybatis-plus实现增删改查

mapper继承BaseMapper service 继承ServiceImpl 使用方法新增 save,updateById新增和修改方法返回boolean值,或者使用saveOrUpdate方法有id执行修改操作,没有id 执行新增操作 案例 Service public class UserService extends ServiceImpl<UserMapper,User> {// Au…

mac配置Jmeter环境

mac配置Jmeter环境 一、安装jmeter二、Jmeter目录结构三、汉化Jmeter四、jmeter安装第三方插件 一、安装jmeter 第一步先自行配置好电脑的jdk环境 1、官网下载jar包 https://jmeter.apache.org/download_jmeter.cgi 2、解压到软件安装目录 3、启动Jmeter 启动方式1️⃣&#x…

CSS特效---纯CSS实现点击切换按钮

1、演示 2、一切尽在代码中 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewport" content"w…

idea项目编译时报错:GC overhead limit exceeded

问题描述 今天idea构建一个新的项目时报错&#xff1a;GC overhead limit exceeded&#xff0c;错误是发生在编译阶段&#xff0c;而不是运行阶段。 ava: GC overhead limit exceeded java.lang.OutOfMemoryError: GC overhead limit exceededat com.sun.tools.javac.resources…

如何编译OpenHarmony自带APP

作者&#xff1a;王石 概述 OpenHarmony 的主干代码是开源社区的重要学习资源&#xff0c;对于想进行应用开发和熟悉 OpenHarmony 能力的同学主干代码是非常重要的资源&#xff0c;在主干代码的 applications 目录里聚集了很多原生的应用实现&#xff0c;那么如何编译这些代码…

HashMap部分底层源码解析

哈希表的物理结构 HashMap底层都是哈希表&#xff08;也称散列表&#xff09;&#xff0c;线程不安全&#xff0c;其中维护了一个长度为2的幂次方的Entry类型的数组table&#xff0c;数组的每一个索引位置被称为一个桶(bucket)&#xff0c;你添加的映射关系(key,value)最终都被…

实战项目——智慧社区(三)之 门禁管理

1、人脸识别 实现思路 ①查询出所有的小区信息&#xff0c;下拉列表显示&#xff0c;用于后续判断人脸信息是否与所选小区匹配 ②人脸识别&#xff1a;调用腾讯人脸识别的API接口&#xff0c;首先判断传入图片是否为一张人脸&#xff1b;其次将这张人脸去服务器的人员库进行…

c++编程(3)——类和对象(1)、类

欢迎来到博主的专栏——c编程 博主ID&#xff1a;代码小豪 文章目录 类对象类的访问权限类的作用域 类 c最初对c语言的扩展就是增加了类的概念&#xff0c;使得c语言在原有的基础之上可以做到信息隐藏和封装。 那么我们先来讲讲“带类的c”与C语言相比有什么改进。 先讲讲类…

利用SARscape对日本填海造陆和天然气开采进行地表形变监测

日本千叶市&#xff0c;是日本南部重要的工业港市。位于西部的浦安市是一个典型的"填海造田"城市&#xff0c;东南部的东金区有一片天然气开采区域&#xff0c;本文利用SARscape&#xff0c;用干涉叠加的方法&#xff0c;即PS和SBAS&#xff0c;对这两个区域进行地表…

电磁兼容导论翻译疑问

在读电磁兼容导论P71页时&#xff0c;发现在“注意“这句话翻译的和原文有疑问&#xff1a;我的理解是单边幅度谱是双边幅度谱的两倍。请大家帮忙看看应如何翻译。 英文原版&#xff1a;Note that all positive frequency components except the dc component in the two-side…

红黑瓷砖(BFS和DFS)

9 6 ....#. .....# ...... ...... ...... ...... ...... #...# .#..#.45BFS import java.util.Deque; import java.util.LinkedList; import java.util.Scanner;public class Main {//. 黑色//# 红色// 黑色开始static final int N 11;static int n,m,ans 1; static char[][…

Learn SRP 01

学习链接&#xff1a;Custom Render Pipeline (catlikecoding.com) 使用Unity版本&#xff1a;Unity 2022.3.5f1 1.A new Render Pipeline 1.1Project Setup 创建一个默认的3D项目&#xff0c;项目打开后可以到默认的包管理器删掉所有不需要的包&#xff0c;我们只使用Unit…

竞赛课第六周(树状数组的应用)

实验内容: HDU 1166 敌兵布阵【线段树】 线段树的应用 敌兵布阵 C国的死对头A国这段时间正在进行军事演习&#xff0c;所以C国间谍头子Derek和他手下Tidy又开始忙乎了。A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况。由于采取…

mybatis-puls-配置日志

#日志配置 mybatis-plus.configuration.log-implorg.apache.ibatis.logging.stdout.StdOutImpl 我们所有的sql现在是不可见的&#xff0c;我们希望知道它是怎么执行的&#xff0c;所以我们必须要看日志

【示例】MySQL-SQL语句优化

前言 本文主要讲述不同SQL语句的优化策略。 SQL | DML语句 insert语句 插入数据的时候&#xff0c;改为批量插入 插入数据的时候&#xff0c;按照主键顺序插入 大批量插入数据的时候&#xff08;百万&#xff09;&#xff0c;用load指令&#xff0c;从本地文件载入&#x…

springCloud项目打包 ,maven package或install打包报错

解决思路一&#xff1a; <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.3.7.RELEASE</version></plugin><plugin>&…

MySQL中的SQL高级语句[二]

使用语言 MySQL 使用工具 Navicat Premium 16 代码能力快速提升小方法&#xff0c;看完代码自己敲一遍&#xff0c;十分有用 拖动表名到查询文件中就可以直接把名字拉进来以下是使用脚本方法&#xff0c;也可以直接进行修改中括号&#xff0c;就代表可写可不写 有些地方的代…

在Ubuntu上安装Docker Compose

Docker Compose 是一个用于定义和管理Docker容器的工具&#xff0c;它使用yml来配置应用的服务、网络和卷等。特别是在定义多个容器时&#xff0c;它非常擅长定义多个容器之间的关系和依赖。 第一步&#xff1a;更新软件包 sudo apt update第二步&#xff1a;安装网络工具cur…

我企业的业务需要制作企业网站吗?11个支持的理由以及5个反对的理由!

如果你的企业经营得还不错&#xff0c;你可能会找出很多理由&#xff0c;说明为什么一个高效的网站对你来说并不那么重要。确实&#xff0c;你明白企业需要在互联网上有一定的存在感&#xff0c;但你可能并不认为一个高效的网站会对你的特定业务产生太大的影响——尤其是当你已…

无尘净化棉签:医药、化妆品及工业应用中的重要角色及防静电特性

无尘净化棉签是一种在医药、化妆品、电子光电产品、半导体、光学、磁头清洗、视频头、清洗头等领域广泛应用的清洁工具。本文探讨了无尘净化棉签在这些领域中的重要性&#xff0c;并特别关注了其防静电特性对产品质量和性能的影响。 无尘净化棉签是一种专为减少或避免产生灰尘和…