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 相关文章推荐
总结网络IO模型与select模型的Python实例讲解
Jun 27 Python
python下载图片实现方法(超简单)
Jul 21 Python
对numpy中array和asarray的区别详解
Apr 17 Python
django初始化数据库的实例
May 27 Python
Python subprocess模块功能与常见用法实例详解
Jun 28 Python
Django框架实现的分页demo示例
May 25 Python
Python:slice与indices的用法
Nov 25 Python
Python Handler处理器和自定义Opener原理详解
Mar 05 Python
python上传时包含boundary时的解决方法
Apr 08 Python
为什么相对PHP黑python的更少
Jun 21 Python
Python调用ffmpeg开源视频处理库,批量处理视频
Nov 16 Python
Python 如何实现文件自动去重
Jun 02 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
header中Content-Disposition的作用与使用方法
2012/06/13 PHP
php实现留言板功能(会话控制)
2017/05/23 PHP
PHP实现二维数组按照指定的字段进行排序算法示例
2019/04/23 PHP
Jquery 学习笔记(一)
2009/10/13 Javascript
jquery实现的一个导航滚动效果具体代码
2013/05/27 Javascript
关于jQuery中的each方法(jQuery到底干了什么)
2014/03/05 Javascript
基于Jquery制作图片文字排版预览效果附源码下载
2015/11/18 Javascript
jQuery  ready方法实现原理详解
2016/10/19 Javascript
vue中手机号,邮箱正则验证以及60s发送验证码的实例
2018/03/16 Javascript
详解使用jQuery.i18n.properties实现js国际化
2018/05/04 jQuery
vue用Object.defineProperty手写一个简单的双向绑定的示例
2018/07/09 Javascript
Vue.js轮播图走马灯代码实例(全)
2019/05/08 Javascript
浅谈ECMAScript 中的Array类型
2019/06/10 Javascript
如何用webpack4.0撸单页/多页脚手架 (jquery, react, vue, typescript)
2019/06/18 jQuery
React Native中ScrollView组件轮播图与ListView渲染列表组件用法实例分析
2020/01/06 Javascript
微信小程序后端实现授权登录
2020/02/24 Javascript
[49:08]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第一场 11.27
2020/12/01 DOTA
Python读取ini文件、操作mysql、发送邮件实例
2015/01/01 Python
Python实现将绝对URL替换成相对URL的方法
2015/06/28 Python
Python中使用urllib2模块编写爬虫的简单上手示例
2016/01/20 Python
浅谈Python2.6和Python3.0中八进制数字表示的区别
2017/04/28 Python
通过源码分析Python中的切片赋值
2017/05/08 Python
Python实现基于socket的udp传输与接收功能详解
2019/11/15 Python
Python双链表原理与实现方法详解
2020/02/22 Python
Django中ORM的基本使用教程
2020/12/22 Python
将时尚融入珠宝:Adornmonde
2019/10/17 全球购物
读书心得体会
2013/12/28 职场文书
基督教婚礼主持词
2014/03/14 职场文书
产品质量承诺范本
2014/03/31 职场文书
超市活动计划书
2014/04/24 职场文书
群众路线剖析材料范文
2014/10/09 职场文书
群众路线查摆问题整改措施
2014/10/10 职场文书
社区综治工作汇报
2014/10/27 职场文书
世界气象日活动总结
2015/02/27 职场文书
2015年大学生党员承诺书
2015/04/27 职场文书
2016年主题党日活动总结
2016/04/05 职场文书