Python进度条的使用


Posted in Python onMay 17, 2021

在使用Python处理比较耗时操作的时候,为了便于观察处理进度,就需要通过进度条将处理情况进行可视化展示,以便我们能够及时了解情况。这对于第三方库非常丰富的Python来说,并不是什么难事。

tqdm就能非常完美的支持和解决这个问题,它是一个快速、扩展性强的进度条工具库。用户只需要封装任意的迭代器 tqdm(iterator),就能在 Python 长循环中添加一个进度提示信息。

官网:

https://github.com/tqdm/tqdm

安装:

pip install tqdm

基于迭代器的使用方式

【例子】使用tqdm(iterator)

import time
from tqdm import tqdm

for i in tqdm(range(100)):
    time.sleep(0.05)

for i in tqdm(list('abcdefgh')):
    time.sleep(0.05)
    
for i in tqdm(range(100), desc='Processing'):
    time.sleep(0.05)

Python进度条的使用

【例子】trange(N)tqdm(range(N))的一种简单写法

import time
from tqdm import tqdm, trange

for i in trange(100):
    time.sleep(0.05)

Python进度条的使用

【例子】循环外的实例化允许手动控制tqdm()

import time
from tqdm import tqdm

pbar = tqdm(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])
for i in pbar:
    pbar.set_description('Processing ' + i)
    time.sleep(0.2)

Python进度条的使用

【例子】

import time
from tqdm import tqdm
from random import random, randint

with tqdm(range(100)) as pbar:
    for i in pbar:
        pbar.set_description("GEN %d" % i)
        pbar.set_postfix({'loss': random(), 'gen': randint(1, 999)})
        time.sleep(0.1)

Python进度条的使用

基于手动进行更新

【例子】使用with语句手动控制tqdm()更新

import time
from tqdm import tqdm

with tqdm(total=200) as pbar:
    pbar.set_description("Processing")
    for i in range(20):
        time.sleep(0.1)
        pbar.update(10)

Python进度条的使用

如果提供了可选变量total(或带有len()的iterable),则会显示预测统计信息。

with也是可选的(可以将tqdm()赋值给变量,但在这种情况下,不要忘记在结尾处delclose()

import time
from tqdm import tqdm

pbar = tqdm(total=200)
pbar.set_description("Processing")
for i in range(20):
    time.sleep(0.1)
    pbar.update(10)
    
pbar.close()

Python进度条的使用

tqdm模块参数说明

class tqdm(Comparable):
    """
    Decorate an iterable object, returning an iterator which acts exactly
    like the original iterable, but prints a dynamically updating
    progressbar every time a value is requested.
    """
    
    def set_description(self, desc=None, refresh=True):
    def set_postfix(self, ordered_dict=None, refresh=True, **kwargs):
    def update(self, n=1):
    def close(self):
  • set_description()函数:用于设置/修改进度条的说明。
  • set_postfix()函数:用于设置/修改后缀(附加统计信息)。
  • update()函数:手动更新进度条。
  • close()函数:清除并关闭progressbar。
class tqdm(Comparable):
    """
    Decorate an iterable object, returning an iterator which acts exactly
    like the original iterable, but prints a dynamically updating
    progressbar every time a value is requested.
    """
    
    def __init__(self, iterable=None, desc=None, total=None, leave=False,
           file=sys.stderr, ncols=None, mininterval=0.1,
           maxinterval=10.0, miniters=None, ascii=None,
           disable=False, unit='it', unit_scale=False,
           dynamic_ncols=False, smoothing=0.3, nested=False,
           bar_format=None, initial=0, gui=False):
  • iterable:可迭代的对象,在手动更新时不需要进行设置。
  • desc:字符串,左边进度条描述文字。
  • total:总的项目数。
  • leave:bool值,迭代完成后是否保留进度条。
  • file:输出指向位置,默认是终端, 一般不需要设置。
  • ncols:调整进度条宽度,默认是根据环境自动调节长度,如果设置为0,就没有进度条,只有输出的信息。
  • unit:描述处理项目的文字,默认是'it',例如: 100 it/s,处理照片的话设置为'img' ,则为 100 img/s。
  • unit_scale:自动根据国际标准进行项目处理速度单位的换算,例如 100000 it/s >> 100k it/s。

【例子】

import time
from tqdm import tqdm

with tqdm(total=100000, desc='Example', leave=True, ncols=100, unit='B', unit_scale=True) as pbar:
    for i in range(10):
        time.sleep(0.5)
        pbar.update(10000)

Python进度条的使用

tqdm源自阿拉伯语单词taqaddum,意思是“progress(进展)”,是python中一个快速、扩展性强的进度条工具库,能让我们了解代码的运行进度,也能让我们的运行结果看起来显得更加美观而又高大上!! 喜欢的小伙伴赶紧用起来吧!!

到此这篇关于Python进度条的使用的文章就介绍到这了,更多相关Python进度条内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
简单介绍Python中的try和finally和with方法
May 05 Python
Python functools模块学习总结
May 09 Python
Python实现字典的key和values的交换
Aug 04 Python
基于python中staticmethod和classmethod的区别(详解)
Oct 24 Python
Python3解决棋盘覆盖问题的方法示例
Dec 07 Python
python使用response.read()接收json数据的实例
Dec 19 Python
python基于Selenium的web自动化框架
Jul 14 Python
python的pygal模块绘制反正切函数图像方法
Jul 16 Python
python字符串切割:str.split()与re.split()的对比分析
Jul 16 Python
对django layer弹窗组件的使用详解
Aug 31 Python
Python常用模块函数代码汇总解析
Aug 31 Python
Python实现区域填充的示例代码
Feb 03 Python
Python包管理工具pip的15 个使用小技巧
Python中json.dumps()函数的使用解析
May 17 #Python
Python中threading库实现线程锁与释放锁
Python中Cookies导出某站用户数据的方法
May 17 #Python
Python 高级库15 个让新手爱不释手(推荐)
Python带你从浅入深探究Tuple(基础篇)
May 15 #Python
Python中zipfile压缩包模块的使用
You might like
php 分库分表hash算法
2009/11/12 PHP
PHP5.2下preg_replace函数的问题
2015/05/08 PHP
PHP 将数组打乱 shuffle函数的用法及简单实例
2016/06/17 PHP
Yii2学习笔记之汉化yii设置表单的描述(属性标签attributeLabels)
2017/02/07 PHP
优化 JavaScript 代码的方法小结
2009/07/16 Javascript
jquery入门必备的基本认识及实例(整理)
2013/06/24 Javascript
Area 区域实现post提交数据的js写法
2014/04/22 Javascript
Javascript正则控制文本框只能输入整数或浮点数
2014/09/02 Javascript
JavaScript面对国际化编程时的一些建议
2015/06/24 Javascript
JavaScript对象参数的引用传递
2016/01/14 Javascript
浅谈javascript中的constructor
2016/06/08 Javascript
前端程序员必须知道的高性能Javascript知识
2016/08/24 Javascript
jQuery获取select选中的option的value值实现方法
2016/08/29 Javascript
用angular实现多选按钮的全选与反选实例代码
2017/05/23 Javascript
js定时器+简单的动画效果实例
2017/11/10 Javascript
(模仿京东用户注册)用JQuery实现简单表单验证,初学者必看
2018/01/08 jQuery
vue.js实现点击后动态添加class及删除同级class的实现代码
2018/04/04 Javascript
Angular5.0 子组件通过service传递值给父组件的方法
2018/07/13 Javascript
vue中@change兼容问题详解
2019/10/25 Javascript
Vue3.0的优化总结
2020/10/16 Javascript
[01:05]主宰至宝剑心之遗
2017/03/16 DOTA
Python开发编码规范
2006/09/08 Python
python类继承与子类实例初始化用法分析
2015/04/17 Python
Django中传递参数到URLconf的视图函数中的方法
2015/07/18 Python
Python书单 不将就
2017/07/11 Python
python使用pipeline批量读写redis的方法
2019/02/18 Python
python判断两个序列的成员是否一样的实例代码
2020/03/01 Python
基于Django快速集成Echarts代码示例
2020/12/01 Python
教师节商场活动方案
2014/02/13 职场文书
应届毕业生应聘自荐信范文
2014/02/26 职场文书
赔偿协议书
2015/01/27 职场文书
教师党员个人自我评价
2015/03/04 职场文书
慈善募捐倡议书
2015/04/27 职场文书
社区敬老月活动总结
2015/05/07 职场文书
Python中的嵌套循环详情
2022/03/23 Python
详解Alibaba Java诊断工具Arthas查看Dubbo动态代理类
2022/04/08 Java/Android