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中的__init__和__new__
Mar 12 Python
Django中对通过测试的用户进行限制访问的方法
Jul 23 Python
Python实现多线程HTTP下载器示例
Feb 11 Python
python matplotlib坐标轴设置的方法
Dec 05 Python
python使用xpath中遇到:到底是什么?
Jan 04 Python
Python使用遗传算法解决最大流问题
Jan 29 Python
python TKinter获取文本框内容的方法
Oct 11 Python
详解Python self 参数
Aug 30 Python
python英语单词测试小程序代码实例
Sep 09 Python
Django 解决开发自定义抛出异常的问题
May 21 Python
Python实现读取并写入Excel文件过程解析
May 27 Python
pycharm配置python 设置pip安装源为豆瓣源
Feb 05 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
preg_match_all使用心得分享
2014/01/31 PHP
利用php输出不同的心形图案
2016/04/22 PHP
详解PHP原生DOM对象操作XML的方法
2016/10/17 PHP
PHP常见的几种攻击方式实例小结
2019/04/29 PHP
PHP编程一定要改掉的5个不良习惯
2020/09/18 PHP
静态图片的十一种滤镜效果--不支持Ie7及非IE浏览器。
2007/03/06 Javascript
仿校内登陆框,精美,给那些很厉害但是没有设计天才的程序员
2008/11/24 Javascript
JQuery的一些小应用收集
2010/03/27 Javascript
获取客户端电脑日期时间js代码(jquery)
2012/09/12 Javascript
Javascript中valueOf与toString区别浅析
2013/03/19 Javascript
JavaScript实现的in_array函数
2014/08/27 Javascript
JavaScript实现仿淘宝商品购买数量的增减效果
2016/01/22 Javascript
学习使用Bootstrap栅格系统
2017/05/11 Javascript
基于vue组件实现猜数字游戏
2020/05/28 Javascript
基于VuePress 轻量级静态网站生成器的实现方法
2018/04/17 Javascript
详解webpack模块加载器兼打包工具
2018/09/11 Javascript
js取0-9随机取4个数不重复的数字代码实例
2019/03/27 Javascript
scrapyd schedule.json setting 传入多个值问题
2019/08/07 Javascript
createObjectURL方法实现本地图片预览
2019/09/30 Javascript
vue 动态生成拓扑图的示例
2021/01/03 Vue.js
PyQt5中多线程模块QThread使用方法的实现
2020/01/31 Python
Python数据可视化处理库PyEcharts柱状图,饼图,线性图,词云图常用实例详解
2020/02/10 Python
python+requests接口压力测试500次,查看响应时间的实例
2020/04/30 Python
远程Wi-Fi宠物监控相机:Petcube
2017/04/26 全球购物
墨尔本复古时尚品牌:Dangerfield
2018/12/12 全球购物
泰国排名第一的家居用品中心:HomePro
2020/11/18 全球购物
护士自我评价
2014/02/01 职场文书
小学生感恩老师演讲稿
2014/08/28 职场文书
会计人员岗位职责
2015/02/03 职场文书
工程部主管岗位职责
2015/02/12 职场文书
人事行政主管岗位职责
2015/04/09 职场文书
范文之农村基层党建工作报告
2019/10/24 职场文书
电脑无法安装Windows 11怎么办?无法安装Win11的解决方法
2021/11/21 数码科技
Android开发之WECHAT微信小程序路由跳转的两种形式
2022/04/12 Java/Android
在Oracle表中进行关键词搜索的过程
2022/06/10 Oracle
pytest实现多进程与多线程运行超好用的插件
2022/07/15 Python