【python】tqdm 进度条详解

本文介绍了Python库tqdm如何实现实时进度条,包括trange函数的使用、可迭代对象的装饰、定制化显示功能(如前缀、后缀和刻度),以及对运行效率的影响分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、前言

  很多时候,当我们的循环时间较长时,往往想要实时了解当前的进度,以期预知剩余的时间,这让我们对代码的输出有了更强的反馈感。那么,要如何实现呢?

1.1 需求来源

  在循环体里添加 print 语句或许能够帮上忙,但是这样又会遮蔽有用的信息。很自然地,我们会想到:

能不能设计一个类似下载安装进度条那样的东西,来简洁直观地展示进度呢?

  这也正是 tqdm 要实现的目标!

1.2 tqdm 快速安装

  由于 tqdm 不是 Python 的内置库,在使用前需要先进行安装。我们可以在终端输入以下命令进行安装:

# 直接安装,略慢
# pip install tqdm
# 使用国内(清华)镜像安装,推荐
pip install tqdm -i https://pypi.tuna.tsinghua.edu.cn/simple

二、代码解析

2.1 原理简介

  在 tqdm 库中,可以使用 tqdm 函数对可迭代类型(Iterable)数据进行装饰,返回 tqdm.std.tqdm 类型的可迭代数据(Iterable)。
原理解析
  可见,装饰前后,二者都是可迭代的,区别在于后者会自动显示进度条!

进度条
  注意:tqdm.std.tqdm 类型只能遍历一次,不能重复使用!

2.2 快速上手

2.2.1 trange

  trange 函数是 tqdm 中最常用的函数,从其源码中可以看出,trange 是 tqdm 对 range 类型数据的装饰:

def trange(*args, **kwargs):
    """Shortcut for tqdm(range(*args), **kwargs)."""
    return tqdm(range(*args), **kwargs)

  使用 trange 可以 替代 range 进行迭代,并显示进度条:

import tqdm
import time

for i in tqdm.trange(20):
    pass
    time.sleep(0.5)

在这里插入图片描述

2.2.2 其他 Iterable

  除了对 range 类型,tqdm 还能装饰所有常见的可迭代类型:str、tuple、list、set、dict ……

import tqdm

a = "abcdefg"
b = (1, 2, 3, 4, 5)
c = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
d = {
   'apple', 'banana', 'cherry', 'date'}
e = {
   'a': "Apple", 'b': "Banana", 'c': "Cherry", 'd': "Date"}

for i in tqdm.tqdm(a): pass
for i in tqdm.tqdm(b): pass
for i in tqdm.tqdm(c): pass
for i in tqdm.tqdm(d): pass
for i in tqdm.tqdm(e): pass

  这些 Iterable 类型都能用于创建进度条:
其他类型

2.3 定制化显示

  在使用设置函数前,应特意将 tqdm 对象命名为新的变量(如 “progress_bar ”),以便调用函数使用。

2.3.1 自定义前后缀

  虽然在 2.2 中,进度条打印的信息已经非常详细

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

今夕晚风依旧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值