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爬虫入门教程--优雅的HTTP库requests(二)
May 25 Python
python中abs&map&reduce简介
Feb 20 Python
详谈python3 numpy-loadtxt的编码问题
Apr 29 Python
python-opencv颜色提取分割方法
Dec 08 Python
python调用staf自动化框架的方法
Dec 26 Python
Django中使用Whoosh进行全文检索的方法
Mar 31 Python
在pytorch中实现只让指定变量向后传播梯度
Feb 29 Python
Python unittest单元测试框架实现参数化
Apr 29 Python
python安装读取grib库总结(推荐)
Jun 24 Python
快速解决pymongo操作mongodb的时区问题
Dec 05 Python
Pytest allure 命令行参数的使用
Apr 18 Python
python Tkinter模块使用方法详解
Apr 07 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
分享微信扫码支付开发遇到问题及解决方案-附Ecshop微信支付插件
2015/08/23 PHP
PHP5.5.15+Apache2.4.10+MySQL5.6.20配置方法分享
2016/05/06 PHP
PHP实现深度优先搜索算法(DFS,Depth First Search)详解
2017/09/16 PHP
kindeditor 加入七牛云上传的实例讲解
2017/11/12 PHP
浅析PHP类的反射来实现依赖注入过程
2018/02/06 PHP
PHP XML Expat解析器知识点总结
2019/02/15 PHP
获取dom元素那些讨厌的位置封装代码
2010/06/23 Javascript
JQuery切换显示的效果实例代码
2013/02/27 Javascript
js仿百度有啊通栏展示效果实现代码
2013/05/28 Javascript
浅谈checkbox的一些操作(实战经验)
2013/11/20 Javascript
JS在可编辑的div中的光标位置插入内容的方法
2014/11/20 Javascript
javascript自定义滚动条实现代码
2020/04/20 Javascript
JS中setTimeout的巧妙用法前端函数节流
2016/03/24 Javascript
关于安卓手机微信浏览器中使用XMLHttpRequest 2上传图片显示字节数为0的解决办法
2016/05/17 Javascript
jQuery 更改checkbox的状态,无效的解决方法
2016/07/22 Javascript
Vue.JS入门教程之事件监听
2016/12/01 Javascript
解决Linux无法正常安装与卸载Node.js的方法
2018/01/19 Javascript
原生JS实现瀑布流插件
2018/02/06 Javascript
vue动态改变背景图片demo分享
2018/09/13 Javascript
[54:29]2018DOTA2亚洲邀请赛 4.7 淘汰赛 VP vs LGD 第二场
2018/04/09 DOTA
python实现监控windows服务并自动启动服务示例
2014/04/17 Python
python使用cPickle模块序列化实例
2014/09/25 Python
Python contextlib模块使用示例
2015/02/18 Python
Python网络爬虫神器PyQuery的基本使用教程
2018/02/03 Python
Python 实现网页自动截图的示例讲解
2018/05/17 Python
python 实现快速生成连续、随机字母列表
2019/11/28 Python
Python namedtuple命名元组实现过程解析
2020/01/08 Python
python爬虫基础知识点整理
2020/06/02 Python
OpenCV Python实现图像指定区域裁剪
2021/03/12 Python
分享8款纯CSS3实现的搜索框功能
2017/09/14 HTML / CSS
H5最强接口之canvas实现动态图形功能
2019/05/31 HTML / CSS
Html5移动端div固定到底部实现底部导航条的几种方式
2021/03/09 HTML / CSS
支教自我鉴定
2014/01/18 职场文书
三八节主持词
2014/03/17 职场文书
安全生产承诺书
2014/03/26 职场文书
幼儿园法制宣传日活动总结
2014/11/01 职场文书