Python中怎样实现进度条效果,有哪些方式
Admin 2022-07-06 群英技术资讯 1281 次浏览
本篇内容介绍了“Python中怎样实现进度条效果,有哪些方式”的有关知识,在实际项目的操作过程或是学习过程中,不少人都会遇到这样的问题,接下来就让小编带大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!有时候在使用Python处理比较耗时操作的时候,为了便于观察处理进度,这时候就需要通过进度条将处理情况进行可视化展示,以便我们能够及时了解情况。这对于第三方库非常丰富的Python来说,想要实现这一功能并不是什么难事。
tqdm就能非常完美的支持和解决这些问题,可以实时输出处理进度而且占用的CPU资源非常少,支持循环处理、多进程、递归处理、还可以结合linux的命令来查看处理情况,等进度展示。
tqdm在阿拉伯语中的意思是“进展”,是python中一个快速、扩展性强的进度条工具库,能让我们了解代码的运行进度,也能让我们的运行结果看起来显得更加美观而又高大上!!
先来看一下进度条的效果。
示例代码:
from tqdm import tqdm
for i in tqdm(range(int(9e7))):
pass
运行结果:


可以看到,当我们的代码的运行需要较长时间时,进度条可以很好的帮助我们了解整个代码的运行进度。
对于可以迭代的对象都可以使用下面这种方式,来实现可视化进度,非常方便。
示例代码:
import time
from tqdm import tqdm
for i in tqdm(range(100)):
time.sleep(0.1)
pass
运行结果:

通过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)
运行结果:

在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
运行结果:

在使用多进程或者嵌套循环处理任务的时候,我们通过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)
运行结果:

通过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)
运行结果:

示例代码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)
运行结果:

除了上述方法之外,我们还能通过另外一种方法来实现操作。
示例代码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()
运行结果:

另外,我们还能通过set_description和set_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)
运行结果:

令人震惊的是,当我们将进度条显示的信息设置为中文时,竟然不会出现乱码!!!!
示例代码:
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)
运行结果:

我们在使用tqdm的时候,可以将tqdm(range(n))替换为trange(n),让你的代码看起来更加简洁而又高大上!
示例代码:
from tqdm import trange
import time
for i in trange(100):
time.sleep(0.1)
pass
运行结果:

示例代码1:
import time
from tqdm import tqdm
for i in tqdm(range(100)):
print("I'm tqdm!", end=' ')
time.sleep(0.1)
运行结果:

示例代码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=' ')
运行结果:

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
VSCode(全称:Visual Studio Code)是一款由微软开发的跨平台免费源代码编辑器。VSCode 开发环境非常简单易用,仅需要安装相关的插件进行简易的配置就可以与原有的python环境组成一套具有简单的代码调试运行的开发工具。对于轻量级的python开发和python学习是比较友好的。优秀的代码提示和更多插件功能让VSCode的使用体验不亚于知名pythonIDE—pycharm。_来自Python3 教程,w3cschool编程狮。
这篇文章主要介绍了python中关于range()函数反向遍历的几种表达,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
这篇文章主要给大家分享Python中怎样使用time库的操作,对于大家学习time库具有一定的借鉴价值,感兴趣的朋友可以参考一下,希望大家阅读完这篇文章能有所收获,下面我们一起来学习一下吧。
何为pythonicpythonic如果翻译成中文的话就是很python。很+名词结构的用法在中国不少,比如:很娘,很国足,很CCTV等等。我的理解为,很+名词表达了一种特殊和强调的意味。所以很pyt
最近工作中遇到了matplotlib保存图片坐标轴不完整的问题,所以这篇文章主要给大家介绍了关于python matplotlib画图时坐标轴重叠显示不全和图片保存时不完整问题的解决方法,需要的朋友可以参考下
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008