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用ConfigObj读写配置文件的实现代码
Mar 04 Python
Python HTMLParser模块解析html获取url实例
Apr 08 Python
Python编程之event对象的用法实例分析
Mar 23 Python
python+django加载静态网页模板解析
Dec 12 Python
Python字典的核心底层原理讲解
Jan 24 Python
windows下numpy下载与安装图文教程
Apr 02 Python
python实现DEM数据的阴影生成的方法
Jul 23 Python
分享8点超级有用的Python编程建议(推荐)
Oct 13 Python
python3通过udp实现组播数据的发送和接收操作
May 05 Python
python如何解析复杂sql,实现数据库和表的提取的实例剖析
May 15 Python
Python import模块的缓存问题解决方案
Jun 02 Python
python playwright之元素定位示例详解
Jul 23 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下载远程图片的几种方法总结
2017/04/07 PHP
Laravel 实现密码重置功能
2018/02/23 PHP
ThinkPHP5+Layui实现图片上传加预览功能
2018/08/17 PHP
详解PHP 二维数组排序保持键名不变
2019/03/06 PHP
解决php扩展安装不生效问题
2019/10/25 PHP
JavaScript 定义function的三种方式小结
2009/10/16 Javascript
jQuery 判断元素上是否绑定了事件
2009/10/28 Javascript
JS动态修改iframe内嵌网页地址的方法
2015/04/01 Javascript
解决jquery插件:TypeError:$.browser is undefined报错的方法
2015/11/21 Javascript
jQuery版本升级踩坑大全
2016/01/12 Javascript
使用Jasmine和Karma对AngularJS页面程序进行测试
2016/03/05 Javascript
JS封装的自动创建表格的实现代码
2016/06/15 Javascript
详解用vue-cli来搭建vue项目和webpack
2017/04/20 Javascript
浅谈JS如何实现真正的对象常量
2017/06/25 Javascript
详解Node中导入模块require和import的区别
2017/08/11 Javascript
OkHttp踩坑随笔为何 response.body().string() 只能调用一次
2018/01/08 Javascript
详解vue项目中如何引入全局sass/less变量、function、mixin
2018/06/02 Javascript
基于html+css+js实现简易计算器代码实例
2020/02/28 Javascript
vue@cli3项目模板怎么使用public目录下的静态文件
2020/07/07 Javascript
Python安装Imaging报错:The _imaging C module is not installed问题解决方法
2014/08/22 Python
Python遍历指定文件及文件夹的方法
2015/05/09 Python
python实现二维码扫码自动登录淘宝
2016/12/27 Python
点球小游戏python脚本
2018/05/22 Python
浅谈Python里面小数点精度的控制
2018/07/16 Python
tensorflow: variable的值与variable.read_value()的值区别详解
2018/07/30 Python
Python scipy的二维图像卷积运算与图像模糊处理操作示例
2019/09/06 Python
Python实现串口通信(pyserial)过程解析
2019/09/25 Python
python实现超市管理系统(后台管理)
2019/10/25 Python
python飞机大战 pygame游戏创建快速入门详解
2019/12/17 Python
使用Python给头像加上圣诞帽或圣诞老人小图标附源码
2019/12/25 Python
python 计算概率密度、累计分布、逆函数的例子
2020/02/25 Python
英国百年闻名的优质健康产品连锁店:Holland & Barrett
2019/12/19 全球购物
2014年党员创先争优承诺书
2014/05/29 职场文书
四风问题对照检查材料
2014/09/22 职场文书
工厂仓库管理员岗位职责
2015/04/09 职场文书
单独二胎证明
2015/06/24 职场文书