Python-tqdm进度条学习

目录

 

1、简介

2、使用

2.1安装

2.2示例

手动控制tqdm的更新

自定义进度条显示信息

通过任意的迭代器使用

通过trange()方法使用

tqdm 的 标准打印输出write 方法

结合pandas的使用

结合jupyter notebook

3、参考


1、简介

tqdm是Python中专门用于进度条美化的模块,通过在非while的循环体内嵌入tqdm,可以得到一个能更好展现程序运行过程的提示进度条信息,本文就将针对tqdm的基本用法进行介绍。

2、使用

用法:tqdm(iterator)

#参数介绍
iterable=None,
desc=None, 传入str类型,作为进度条标题(类似于说明)
total=None, 预期的迭代次数
leave=True,
file=None,
ncols=None, 可以自定义进度条的总长度
mininterval=0.1, 最小的更新间隔
maxinterval=10.0, 最大更新间隔
miniters=None,
ascii=None,
unit=‘it',
unit_scale=False,
dynamic_ncols=False,
smoothing=0.3,
bar_format=None,
initial=0,
position=None,
postfix 以字典形式传入 详细信息 例如 速度= 10,

tqdm官方文档: https://github.com/tqdm/tqdm
个人学习代码例子demo: https://github.com/elim28/demos/tree/master/tqdm-demo 

2.1安装

pip install tqdm 

2.2示例

手动控制tqdm的更新

使用with语句,通过update方法可以控制每次进度条更新的进度:

from tqdm import tqdm
import time
 
#total参数设置进度条的总长度
with tqdm(total=100) as pbar:
  for i in range(100):
    time.sleep(0.05)#为了看进度条中间结果
    #每次更新进度条的长度
    pbar.update(1)


#update=2
with tqdm(total=100) as pbar:
  for i in range(100):
    time.sleep(0.05)#为了实时查看进度条中间结果
    #每次更新进度条的长度
    pbar.update(2)

#只更新部分
with tqdm(total=100) as pbar:
  for i in range(10):
    time.sleep(0.05)#为了实时查看进度条中间结果
    pbar.update(1)
#全部数据遍历=for遍历次数*每次update次数
with tqdm(total=100) as pbar:
  for i in range(10):
    time.sleep(0.05)
    pbar.update(10)
 

注意:for遍历全部数据(方法1)

结果(中间和最后都是进度条+相关信息)

  • 已循环次数/总循环次数
    • 进度条每次增加的是设置的update的大小,直至tqdm设定的全部数据total大小
  • 已过时间/剩余时间 
  • 瞬时速度(每秒循环次数)
  • 还可以有左边和右边的描述信息
  • 下面是中间和最后结果

.

注意:update大于1的话

  • 中间是进度条和信息,但是最后只输出最终的平均速度
  • 中间的已循环次数+瞬时速度+最后输出的bit全部变成相应倍数
  • 下面是等于2的情况

注意:for循环只是遍历部分数据

  • 那么进度条也是只遍历部分数据
  • 下面试试截取最后部分,未截图中间部分

 

注意:for循环遍历全部数据

  • 可以是for遍历全部数据,update=1,就是第一种
  • 可以for遍历次数*update次数只要等于全部数据也可以(本例子是这种)
  • 但是速度是第一种的10倍
    • 速度与update大小有关
  • 下面试试截取最后部分,未截图中间部分

除了使用with之外,还可以使用另外一种方法实现上面的效果。最后需要手动关闭tqdm

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()


pbar = tqdm(total=100)
for i in range(10):
    time.sleep(0.05)
    pbar.update(10)
pbar.close()

结果同上

自定义进度条显示信息

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

import tqdm
from random import random, randint
from tqdm import tqdm
import time
 
#total参数设置进度条的总长度
with tqdm(total=100) as pbar:
  for i in range(100):
    time.sleep(0.1)
    #设置进度条左边显示的信息
    pbar.set_description("GEN %i"%i)
    #设置进度条右边显示的信息
    pbar.set_postfix(loss=random(),gen=randint(1,999),str="h",lst=[1,2])
    #每次更新进度条的长度
    pbar.update(1)

结果

通过任意的迭代器使用

import tqdm
from random import random, randint
from tqdm import tqdm
import time
from tqdm import trange
 


pbar = tqdm(["a", "b", "c", "d"]) #定义外部循环来控制tqdm
for char in pbar:
    time.sleep(0.1)
    # 设置描述
    pbar.set_description("Processing %s" % char)



alist = list('letters')
bar = tqdm(alist)#定义外部循环来控制tqdm
for letter in bar:
    time.sleep(0.1)
    bar.set_description(f"Now get {letter}")



for i in tqdm(range(1000)):#默认更新10
    time.sleep(0.01)#进度条每0.1s前进一次,总时间为1000*0.1=100s



for i in trange(4, desc='1st loop'):#当前指示
    for j in trange(100, desc='2st loop'):#进度条嵌套使用:已完成+当前正在进行
        time.sleep(0.1)

前面3个普通输出

最后一个嵌套的结果

  • 一个个的进行
    • 前3行是已完成
    • 第四行是当前指示
    • 最后一行是当前进行

最后结果 

通过trange()方法使用

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

from tqdm import trange
for i in trange(100):
    #do something
    sleep(0.01)

tqdm 的 标准打印输出write 方法

在使用tqdm显示进度条的时候,若代码中存在print可能会使得输出杂乱,此时可以将print语句替换为tqdm.write,代码如下:

import time
from tqdm import *

bar = trange(10)
for i in bar:
    time.sleep(0.1)
    if not (i % 3):
        tqdm.write("Done task %i" % i)

结合pandas的使用

import pandas as pd
import numpy as np
 
df = pd.DataFrame(np.random.randint(0, 100, (10000000, 6)))
tqdm.pandas(desc="my bar!")
df.progress_apply(lambda x: x**2)

结合jupyter notebook

tqdm针对jupyter notebook添加了专门的进度条美化方法,使用tqdm_notebook()方法,下面是一个简单的例子:

vscode如何打开jupyter(可以参考):

  • 查看-打开视图-输入>ju
  • 或者直接新建文件,后缀为ipynb

 

from tqdm import tqdm_notebook
import time
 
for i in tqdm_notebook(range(100),desc='demo:'):
    time.sleep(0.01)

 

 

3、参考

tqdm: 进度条,治疗"等待焦虑综合征"

python进度条显示-tqmd模块的实现示例

PyTorch 59.tqdm进度条

Python中tqdm模块的用法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

静静喜欢大白

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

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

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

打赏作者

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

抵扣说明:

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

余额充值