python实现进度条的多种实现
有时候在使用Python处理比较耗时操作的时候,为了便于观察处理进度,这时候就需要通过进度条将处理情况进行可视化展示,以便我们能够及时了解情况。这对于第三方库非常丰富的Python来说,想要实现这一功能并不是什么难事。
tqdm就能非常完美的支持和解决这些问题,可以实时输出处理进度而且占用的CPU资源非常少,支持循环处理、多进程、递归处理、还可以结合linux的命令来查看处理情况,等进度展示。
tqdm在阿拉伯语中的意思是“进展”,是python中一个快速、扩展性强的进度条工具库,能让我们了解代码的运行进度,也能让我们的运行结果看起来显得更加美观而又高大上!!
先来看一下进度条的效果。
示例代码:
from tqdm import tqdm for i in tqdm(range(int(9e7))): pass
运行结果:
可以看到,当我们的代码的运行需要较长时间时,进度条可以很好的帮助我们了解整个代码的运行进度。
一、tqdm相关操作 1、迭代对象处理对于可以迭代的对象都可以使用下面这种方式,来实现可视化进度,非常方便。
示例代码:
import timefrom tqdm import tqdm for i in tqdm(range(100)): time.sleep(0.1) pass
运行结果:
通过tqdm提供的set_description方法可以实时查看每次处理的数据。
示例代码:
import timefrom 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 timeimport pandas as pdfrom 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 timefrom 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 timefrom tqdm import tqdm # total参数设置进度条的总长度为100with tqdm(total=100) as pbar: for i in range(100):time.sleep(0.1)# 每次更新进度条的长度为1pbar.update(1)
运行结果:
示例代码2:
import timefrom tqdm import tqdm # total参数设置进度条的总长度为500with tqdm(total=500) as pbar: for i in range(100):time.sleep(0.1)# 每次更新进度条的长度为3pbar.update(3)
运行结果:
除了上述方法之外,我们还能通过另外一种方法来实现操作。
示例代码3:
import timefrom tqdm import tqdm # total参数设置进度条的总长度为100pbar = tqdm(total=100)for i in range(100): time.sleep(0.1) # 每次更新进度条的长度为1 pbar.update(1)# 关闭占用的资源pbar.close()
运行结果:
另外,我们还能通过set_description和set_postfix方法设置进度条显示信息。
示例代码:
import timefrom tqdm import trangefrom 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 timefrom tqdm import trangefrom 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 trangeimport time for i in trange(100): time.sleep(0.1) pass
运行结果:
示例代码1:
import timefrom tqdm import tqdmfor i in tqdm(range(100)): print('I’m tqdm!', end=’ ’) time.sleep(0.1)
运行结果:
示例代码2:
import timefrom 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 进度条内容请搜索好吧啦网以前的文章或继续浏览下面的相关文章希望大家以后多多支持好吧啦网!
相关文章:
