tqdm,Python进度条库快速上手

前言

在编程中,尤其是处理长时间运行的任务时,了解程序的进度是非常重要的。Python中有一个非常实用的库,名为 tqdm ,它能够以极简的方式帮助我们快速创建进度条。本文将向初学者介绍如何在Python中使用 tqdm 库来制作进度条。

1. tqdm简介

tqdm 是一个快速、扩展性强的Python库,用于在长循环中添加进度提示信息。它可以在几秒钟内轻松集成到代码中,且对代码的侵入性极小。

1.1 安装tqdm

在使用 tqdm 之前,需要先进行安装。通过pip可以轻松安装:

pip install tqdm

2. 基本用法

2.1 在for循环中使用tqdm

tqdm 最常见的用法是将其直接用于for循环。这可以通过将 tqdm() 函数包裹在任何可迭代的对象上来实现。

from tqdm import tqdm
import time

# 模拟的任务列表
tasks = range(10)

for task in tqdm(tasks):
    # 模拟任务执行时间
    time.sleep(0.5)

这段代码将创建一个包含10个任务的简单进度条。 time.sleep(0.5) 用于模拟每个任务的执行时间。

2.2 手动更新进度条

除了自动迭代外, tqdm 还允许手动控制进度条。这在需要更精细控制进度条的场景下非常有用。

from tqdm import tqdm
import time

# 初始化进度条,设置总数为10
progress_bar = tqdm(total=10)

# 执行任务
for i in range(10):
    time.sleep(0.5)
    # 更新进度条
    progress_bar.update(1)

# 关闭进度条
progress_bar.close()

3. 进度条定制

tqdm 提供了许多定制选项,可以改变进度条的外观和信息。

3.1 设置描述信息

可以通过 desc 参数为进度条添加描述信息。

for task in tqdm(tasks, desc="Processing"):
    time.sleep(0.5)

3.2 自定义进度条长度

使用 ncols 参数可以自定义进度条的长度。

for task in tqdm(tasks, ncols=100):
    time.sleep(0.5)

3.3 改变进度条样式

使用不同的字符来改变进度条的样式。

for task in tqdm(tasks, bar_format="{l_bar}{bar}| {n_fmt}/{total_fmt}"):
    time.sleep(0.5)

4. 在不同环境中使用tqdm

tqdm 不仅可以在命令行中使用,也可以在Jupyter Notebook等环境中使用。

4.1 在Jupyter Notebook中使用

在Jupyter Notebook中,可以使用 tqdm.notebook.tqdm 来获取更好的交互体验。

from tqdm.notebook import tqdm
for task in tqdm(tasks):
    time.sleep(0.5)

5. 实战演练

下面通过一个实战例子,演示如何在实际项目中使用 tqdm 

例子:文件下载进度条

假设我们需要下载一些文件,并希望显示下载进度。

import requests
from tqdm import tqdm

# 文件URL
url = "https://example.com/file.zip"
response = requests.get(url, stream=True)

# 获取文件总大小
total_size = int(response.headers.get('content-length', 0))
block_size = 1024 # 1 Kibibyte

with open("file.zip", "wb") as file, tqdm(
    total=total_size, unit='iB', unit_scale=True) as bar:
    for data in response.iter_content(block_size):
        file.write(data)
        bar.update(len(data))

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2、电源管理入门之开机详解

目录 1. 硬件上电 2. ATF运行 3. Linux启动 3.1 内核启动start_kernel 3.2 平台启动setup_arch 3.4 DTS初始化psci_dt_init 3.5 系统rest创建kernel_init线程 3.6 SMP初始化smp_init 3.7 PSCI接口psci_cpu_on 3.8 SMC返回secondary_entry 系统开机牵扯到:“我是…

Springboot 中使用 Redisson+AOP+自定义注解 实现访问限流与黑名单拦截

🏷️个人主页:牵着猫散步的鼠鼠 🏷️系列专栏:Java全栈-专栏 🏷️个人学习笔记,若有缺误,欢迎评论区指正 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默&…

python3 flask 实现对config.yaml文件的内容的增删改查,并重启服务

config.yaml配置文件内容 功能就是userpass下的用户名和密码做增删改查,并重启hy2服务 auth:type: userpassuserpass:csdn: csdnlisten: :443 masquerade:proxy:rewriteHost: trueurl: https://www.bing.com/type: proxy tls:cert: /root/hyst*****马赛克******er…

JS文本加密方法探究

在前端开发中,有时候我们需要对敏感文本进行简单的加密,以提高安全性。本文将介绍一种基于 JavaScript 实现的文本加密方法,使用了 Base64、Unicode 和 ROT13 编码。 示例代码 function encodeText(text) {// Base64编码var base64Encoded …

苍穹外卖——第一天nginx

放到全是英文路径的打不开 到安装路径进入cmd,输入nginx -t nginx: the configuration file E:\Astudy\nginx-1.20.2/conf/nginx.conf syntax is ok nginx: [emerg] bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a socket in a way forbid…

linux部署jenkins,支持jdk1.8

无废话,纯干活安装指令 本文前提条件需安装jdk8,安装参考:Linux配置jdk环境 下载资源 # 创建安装目录 mkdir -p /data/jenkins && cd /data/jenkins# 下载jenkins的war包,v2.346.x支持jdk1.8,高于这个版本的…

板块一 Servlet编程:第六节 HttpSession对象全解 来自【汤米尼克的JAVAEE全套教程专栏】

板块一 Servlet编程:第六节 HttpSession对象全解 一、什么是HttpSessionSession的本质 二、创建Seesion及常用方法三、Session域对象四、Session对象的销毁 在上一节中,我们学习了Servlet五大对象里的第三个Cookie对象,但Cookie是有大小限制和…

ajax 如何从服务器上获取数据?

在Web开发中,AJAX(Asynchronous JavaScript and XML)是一种常用的技术,用于在不重新加载整个页面的情况下,从服务器获取数据并更新网页的某一部分。使用AJAX,你可以创建异步请求,从而提供更快的…

AI:133-基于深度学习的工业质检自动化

🚀点击这里跳转到本专栏,可查阅专栏顶置最新的指南宝典~ 🎉🎊🎉 你的技术旅程将在这里启航! 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带有在本地跑过的关键代码,详细讲解供…

Git 关于SSH密钥的生成

一:配置ssh 桌面右键鼠标打开 “Git Bash Here” 键入命令:ssh-keygen -t ed25519 -C "自己邮箱 " 接着就一路回车 打开 C:\Users\Administrator.ssh 目录, 复制 id_xxxxx.pub 内容 文件里面则是一些信息,如下 …

Reliable Visualization for Deep Speaker Recognition - 语音可解释性

MOTIVATION OF READING: 语音任务可解释性 Link: http://arxiv.org/abs/2204.03852 Code:http://project.cslt.org/ 1. Overview Motivation of the work: If any of the visualization tools are reliable when applied to speaker recognition, which makes th…

二百二十四、Kettle——曲线实现从Hive插入更新到ClickHouse(分区字段是month或year)

一、目的 对于以month、year为分区字段的数据,不是像day字段分区那样每天增量插入更新即可,而是要以部分字段查询、部分字段更新,但是ClickHouse数据库并不适合更新操作,直接使用Kettle的插入更新控件会导致问题,必须…

数据仓库选型建议

1 数仓分层 1.1 数仓分层的意义 **数据复用,减少重复开发:**规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算。数据的逐层加工原则,下层包含了上层数据加工所需要的全量数据,这样的加工方…

JVM对象的创建流程与内存分配

对象的创建流程与内存分配 创建流程对象内存分配方式内存分配安全问题对象内存分配流程【重要】:对象怎样才会进入老年代?重点 案例演示:对象分配过程大对象直接进入老年代02-对象内存分配的过程: 创建流程 加载 验证 解析 准备 初始化 使用 写在 对象内存分配方式 内存分配…

Codeforces Round 928 (Div. 4)( F(dfs+小技巧),G(树上dp) )

CF1926F. Vlad and Avoiding X 题意: 给定一个 7 ∗ 7 7*7 7∗7的网格,网格上的点不是黑色就是白色,要求修改最少的点,使得网格中没有X形状的黑色网格。 思路: 首先看到这个数据范围,很容易想到暴搜&#…

openai chatGPT 原理通俗介绍

引言 近年来,随着深度学习技术的不断发展,自然语言处理(NLP)领域取得了长足的进步。ChatGPT(Generative Pre-trained Transformer)作为一种先进的语言生成模型,在各类对话系统和智能助手中得到…

PHP+vue+mysql网络考试系统成绩学习资料系统7wivi

开发语言:php 后端框架:Thinkphp 前端框架:vue.js 服务器:apache 数据库:mysql 运行环境:phpstudy/wamp/xammp等 随着互联网的发展,教育也迎来了互联网的春天,现代教育更加依托于互联网的应用&a…

php反序列化原理常见的魔术方法

序列化是什么? 要想了解反序列化,就先要知道序列化是什么。下面是是一串序列化数组: a:2:{s:4:"name";s:6:"cike_y";s:3:"age";i:18;}a表示array(数组),2表示这个数组有两…

Maxwell - 增量数据同步工具

前言 今天来学习一个新的大数据小工具 Maxwell ,它和 Sqoop 很像。Sqoop主要用于在 Hadoop (比如 HDFS、Hive、HBase 等)和关系型数据库之间进行数据的批量导入和导出,而 Maxwell 则主要用于监控数据库的变化(通过监控…

详解AT24CXX驱动开发(linux platform tree - i2c应用)

目录 概述 1 认识AT24Cxx 1.1 AT24CXX的特性 1.2 AT24CXX描述 1.2.1 引脚 1.2.2 容量描述 1.2.3 设备地址 1.3 操作时序 1.3.1 写单个字节时序 1.3.2 写page字节时序 1.3.3 读取当前数据时序 1.3.4 随机读取数据 1.3.5 连续读取多个数据 2 驱动开发 2.1 硬件接口…