python实现进度条的多种实现

作者:IT之一小佬 时间:2021-03-20 10:39:52 

有时候在使用Python处理比较耗时操作的时候,为了便于观察处理进度,这时候就需要通过进度条将处理情况进行可视化展示,以便我们能够及时了解情况。这对于第三方库非常丰富的Python来说,想要实现这一功能并不是什么难事。

tqdm就能非常完美的支持和解决这些问题,可以实时输出处理进度而且占用的CPU资源非常少,支持循环处理、多进程、递归处理、还可以结合linux的命令来查看处理情况,等进度展示。

tqdm在阿拉伯语中的意思是“进展”,是python中一个快速、扩展性强的进度条工具库,能让我们了解代码的运行进度,也能让我们的运行结果看起来显得更加美观而又高大上!!

先来看一下进度条的效果。

示例代码:


from tqdm import tqdm

for i in tqdm(range(int(9e7))):
   pass

运行结果:

python实现进度条的多种实现

python实现进度条的多种实现

可以看到,当我们的代码的运行需要较长时间时,进度条可以很好的帮助我们了解整个代码的运行进度。

一、tqdm相关操作

 1、迭代对象处理

对于可以迭代的对象都可以使用下面这种方式,来实现可视化进度,非常方便。

示例代码:


import time
from tqdm import tqdm

for i in tqdm(range(100)):
   time.sleep(0.1)
   pass

运行结果:

python实现进度条的多种实现

2、观察处理的数据

通过tqdm提供的set_description方法可以实时查看每次处理的数据。

示例代码:


import time
from tqdm import tqdm

pbar = tqdm(["A", "B", "C", "D", "E", "F"])
for i in pbar:
   time.sleep(1)
   pbar.set_description("Processing %s" % i)

运行结果:

python实现进度条的多种实现

3、pandas中使用tqdm

pandas中对大量数据进行相关操作或者遍历表格的行列时,我们可以使用tqdm来了解代码运行情况。

示例代码:


import time
import pandas as pd
from tqdm import tqdm

df = pd.DataFrame({
   'Month': [1, 2, 3, 4, 5, 2, 3, 4, 5, 1, 2, 3, 4],
   'Name': ['张三', '张三', '张三', '张三', '张三', '李四', '李四', '李四', '李四', '王五', '王五', '王五', '王五'],
   'Sex': ['男', '男', '女', '女', '女', '男', '男', '男', '男', '女', '女', '女', '女']
})
for i in tqdm(['Month', 'Name', 'Sex']):
   time.sleep(2)
   pass

运行结果:

python实现进度条的多种实现

4、多进程进度条

在使用多进程或者嵌套循环处理任务的时候,我们通过tqdm可以实时查看每一个进程任务的处理情况

示例代码:


import time
from tqdm import tqdm

for i in tqdm(range(5), ascii=False, desc="1st process"):
   #  ascii = True 时为##
   for j in tqdm(range(5), ascii=True, desc="2st process"):
       time.sleep(0.1)

运行结果:

python实现进度条的多种实现

5、自定义进度条显示信息

通过update方法可以控制每次进度条更新的进度。

示例代码1:


import time
from tqdm import tqdm

#  total参数设置进度条的总长度为100
with tqdm(total=100) as pbar:
   for i in range(100):
       time.sleep(0.1)
       #  每次更新进度条的长度为1
       pbar.update(1)

运行结果:

python实现进度条的多种实现

示例代码2:


import time
from tqdm import tqdm

#  total参数设置进度条的总长度为500
with tqdm(total=500) as pbar:
   for i in range(100):
       time.sleep(0.1)
       #  每次更新进度条的长度为3
       pbar.update(3)

运行结果:

python实现进度条的多种实现

除了上述方法之外,我们还能通过另外一种方法来实现操作。

示例代码3:


import time
from tqdm import tqdm

#  total参数设置进度条的总长度为100
pbar = tqdm(total=100)
for i in range(100):
   time.sleep(0.1)
   #  每次更新进度条的长度为1
   pbar.update(1)
#  关闭占用的资源
pbar.close()

运行结果:

python实现进度条的多种实现

另外,我们还能通过set_descriptionset_postfix方法设置进度条显示信息。

示例代码:


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

with trange(100) as t:
   for i in t:
       #  设置进度条左边显示的信息
       #  注意:代码中的GEN是可以手动换成其它内容的
       t.set_description("GEN %i" % i)
       #  设置进度条右边显示的信息
       #  注意:此处代码中的gen lr lst是可以手动换成其它内容的
       t.set_postfix(loss=random(), gen=randint(1, 999), lr="h", lst=[1, 2])
       time.sleep(0.1)

运行结果:

python实现进度条的多种实现

令人震惊的是,当我们将进度条显示的信息设置中文时,竟然不会出现乱码!!!!

示例代码:


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

with trange(100) as t:
   for i in t:
       #  设置进度条左边显示的信息
       #  注意:代码中的GEN是可以手动换成其它内容的
       t.set_description("进度 %i" % i)
       #  设置进度条右边显示的信息
       #  注意:此处代码中的gen lr lst是可以手动换成其它内容的
       t.set_postfix(损失=random(), 随机=randint(1, 999), 名字="h", 列表=[1, 2])
       time.sleep(0.1)

运行结果:

python实现进度条的多种实现

6.tqdm(range(n))替换为trange(n)

我们在使用tqdm的时候,可以将tqdm(range(n))替换为trange(n),让你的代码看起来更加简洁而又高大上!

示例代码:


from tqdm import trange
import time

for i in trange(100):
   time.sleep(0.1)
   pass

运行结果:

python实现进度条的多种实现

7.在jupyter notebook中使用进度条tqdm:

示例代码1:


import time
from tqdm import tqdm
for i in tqdm(range(100)):
   print("I'm tqdm!", end=' ')
   time.sleep(0.1)

运行结果:

python实现进度条的多种实现

示例代码2:


import time
from tqdm import tqdm_notebook

for i in tqdm_notebook(range(100), desc="demo"):
   time.sleep(0.1)
   print("I'm tqdm_notebook!", end=' ')

运行结果:

python实现进度条的多种实现

来源:https://blog.csdn.net/weixin_44799217/article/details/116050024

标签:python,进度条
0
投稿

猜你喜欢

  • IE6/7关于 Absolute Position 、relative 的一些意外

    2008-11-27 11:34:00
  • 详解用python写一个抽奖程序

    2023-07-06 10:28:12
  • Python实现改变与矩形橡胶的线条的颜色代码示例

    2022-08-02 08:16:26
  • Python Spyder 调出缩进对齐线的操作

    2023-07-17 00:56:04
  • JavaScript风格要素

    2007-10-25 16:57:00
  • ASP中从数据库读取二进制文件数据代码

    2010-04-24 15:44:00
  • 柳永法:vbs或asp采集文章时网页编码问题

    2009-02-04 10:50:00
  • python入门for循环嵌套理解学习

    2021-03-01 21:42:16
  • Oracle数据库由dataguard备库引起的log file sync等待问题

    2023-07-17 07:35:25
  • PHP常用函数和常见疑难问题解答

    2023-11-08 19:28:17
  • 使用pytorch搭建AlexNet操作(微调预训练模型及手动搭建)

    2023-05-04 05:09:51
  • PyQt QListWidget修改列表项item的行高方法

    2022-02-08 08:33:35
  • 对Python3 解析html的几种操作方式小结

    2021-04-07 20:13:12
  • SQL查询入门(中篇)

    2011-09-30 11:15:09
  • PHP curl get post 请求的封装函数示例【get、post、put、delete等请求类型】

    2023-05-25 01:24:18
  • 一个完美网站的101项指标.第四部分.设计

    2008-02-29 22:22:00
  • Python使用base64模块进行二进制数据编码详解

    2023-08-26 20:13:13
  • range 标准化之获取

    2023-09-01 05:35:11
  • 多按钮共存——don’t make me think

    2010-01-11 20:20:00
  • python中requests爬去网页内容出现乱码问题解决方法介绍

    2023-09-14 01:00:11
  • asp之家 网络编程 m.aspxhome.com