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使用Berkeley DB数据库实例
Sep 26 Python
使用Python脚本操作MongoDB的教程
Apr 16 Python
Python统计日志中每个IP出现次数的方法
Jul 06 Python
详谈python read readline readlines的区别
Sep 22 Python
基于Python实现的ID3决策树功能示例
Jan 02 Python
python如何为被装饰的函数保留元数据
Mar 21 Python
python skimage 连通性区域检测方法
Jun 21 Python
python用BeautifulSoup库简单爬虫实例分析
Jul 30 Python
python 实现手机自动拨打电话的方法(通话压力测试)
Aug 08 Python
python 中Arduino串口传输数据到电脑并保存至excel表格
Oct 14 Python
python爬虫---requests库的用法详解
Sep 28 Python
Python绘制地图神器folium的新人入门指南
May 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中神奇的fastcgi_finish_request
2011/05/02 PHP
php编写的抽奖程序中奖概率算法
2015/05/14 PHP
php中preg_match的isU代表什么意思
2015/10/01 PHP
Laravel Eloquent分表方法并使用模型关联的实现
2019/11/25 PHP
JavaScript 学习笔记(十二) dom
2010/01/21 Javascript
javascript cookies操作集合
2010/04/12 Javascript
jquery提取元素里的纯文本不包含span等里的内容
2013/09/30 Javascript
JS获取DropDownList的value值与text值的示例代码
2014/01/07 Javascript
jquery+ajax请求且带返回值的代码
2015/08/12 Javascript
JavaScript中用let语句声明作用域的用法讲解
2016/05/20 Javascript
使用BootStrap实现表格隔行变色及hover变色并在需要时出现滚动条
2017/01/04 Javascript
js仿微信公众平台打标签功能
2017/04/08 Javascript
使用ES6语法重构React代码详解
2017/05/09 Javascript
JavaScript表单即时验证 验证不成功不能提交
2017/08/31 Javascript
vue2.0 常用的 UI 库实例讲解
2017/12/12 Javascript
详解react native页面间传递数据的几种方式
2018/11/07 Javascript
layui form表单提交之后重新加载数据表格的方法
2019/09/11 Javascript
解决layui调用自定义方法提示未定义的问题
2019/09/14 Javascript
非常漂亮的js烟花效果
2020/03/10 Javascript
利用PHP实现递归删除链表元素的方法示例
2020/10/23 Javascript
python文件比较示例分享
2014/01/10 Python
浅谈python配置与使用OpenCV踩的一些坑
2018/04/02 Python
python处理数据,存进hive表的方法
2018/07/04 Python
Python Selenium 之关闭窗口close与quit的方法
2019/02/13 Python
python使用pandas处理大数据节省内存技巧(推荐)
2019/05/05 Python
基于pytorch 预训练的词向量用法详解
2020/01/06 Python
python中not、and和or的优先级与详细用法介绍
2020/11/03 Python
米兰必去买手店排行榜首位:Antonioli
2016/09/11 全球购物
海信商城:海信电视、科龙空调、容声冰箱官方专卖
2017/02/07 全球购物
慕尼黑山地运动、户外服装和体育用品专家:Sporthaus Schuster
2019/08/27 全球购物
static关键字的用法
2013/10/07 面试题
企业法人代表任命书
2014/06/06 职场文书
毕业横幅标语
2014/10/08 职场文书
2015年预防青少年违法犯罪工作总结
2015/05/22 职场文书
催款函怎么写
2015/06/24 职场文书
创业计划书之蛋糕店
2019/08/29 职场文书