python实现进度条的多种实现


Posted in Python onApril 29, 2021

有时候在使用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实现进度条的多种实现

到此这篇关于python实现进度条的多种实现的文章就介绍到这了,更多相关python 进度条内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python中用于去除空格的三个函数的使用小结
Apr 07 Python
Python映射拆分操作符用法实例
May 19 Python
Python中的多行注释文档编写风格汇总
Jun 16 Python
python通过cookie模拟已登录状态的初步研究
Nov 09 Python
Python实现合并同一个文件夹下所有txt文件的方法示例
Apr 26 Python
详解python实现数据归一化处理的方式:(0,1)标准化
Jul 17 Python
Django发送邮件和itsdangerous模块的配合使用解析
Aug 10 Python
Python实现线性插值和三次样条插值的示例代码
Nov 13 Python
pytorch forward两个参数实例
Jan 17 Python
python右对齐的实例方法
Jul 05 Python
Python安装Bs4的多种方法
Nov 28 Python
python实现杨辉三角的几种方法代码实例
Mar 02 Python
教你如何使用Python下载B站视频的详细教程
Python+uiautomator2实现自动刷抖音视频功能
Django项目如何正确配置日志(logging)
Apr 29 #Python
django上传文件的三种方式
Apr 29 #Python
详解Django的MVT设计模式
Django如何与Ajax交互
Apr 29 #Python
Python爬虫进阶之Beautiful Soup库详解
Apr 29 #Python
You might like
php使用curl模拟登录后采集页面的例子
2013/11/04 PHP
10个超级有用值得收藏的PHP代码片段
2015/01/22 PHP
PHPExcel读取EXCEL中的图片并保存到本地的方法
2015/02/14 PHP
PHP 设计模式系列之 specification规格模式
2016/01/10 PHP
快速排序 php与javascript的不同之处
2011/02/22 Javascript
js 金额文本框实现代码
2012/02/14 Javascript
javascript判断是手机还是电脑访问网页的简单实例分享
2014/06/03 Javascript
浅谈jQuery异步对象(XMLHttpRequest)
2014/11/17 Javascript
javascript跨域请求包装函数与用法示例
2016/11/03 Javascript
jQuery设置Easyui校验规则(推荐)
2016/11/21 Javascript
ExtJs异步无法向外传值和赋值的完美解决办法
2017/06/14 Javascript
js prototype和__proto__的关系是什么
2019/08/23 Javascript
mui js控制开关状态、修改switch开关的值方法
2019/09/03 Javascript
微信小程序中使用 async/await的方法实例分析
2020/05/06 Javascript
Vue实现指令式动态追加小球动画组件的步骤
2020/12/18 Vue.js
python检测服务器是否正常
2014/02/16 Python
python引用DLL文件的方法
2015/05/11 Python
分析Python中设计模式之Decorator装饰器模式的要点
2016/03/02 Python
一步步教你用Python实现2048小游戏
2017/01/19 Python
Python实现读写sqlite3数据库并将统计数据写入Excel的方法示例
2017/08/07 Python
Django查询数据库的性能优化示例代码
2017/09/24 Python
Python3 中把txt数据文件读入到矩阵中的方法
2018/04/27 Python
python Django框架实现web端分页呈现数据
2019/10/31 Python
python数据分析:关键字提取方式
2020/02/24 Python
python+requests实现接口测试的完整步骤
2020/10/27 Python
用css3实现当鼠标移进去时当前亮其他变灰效果
2014/04/08 HTML / CSS
Woods官网:加拿大最古老、最受尊敬的户外品牌之一
2020/09/12 全球购物
华为慧通笔试题
2016/04/22 面试题
Linux不知道文件后缀名怎么判断文件类型
2012/04/26 面试题
工程招投标邀请书
2014/01/26 职场文书
办公室文员工作职责
2014/01/31 职场文书
大学运动会入场词
2014/02/22 职场文书
班干部竞选演讲稿
2014/04/24 职场文书
初中国旗下的演讲稿
2014/08/28 职场文书
八一建军节演讲稿
2014/09/10 职场文书
党支部先进事迹材料
2014/12/24 职场文书