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基于itchat实现微信群消息同步机器人
Feb 27 Python
python3.4下django集成使用xadmin后台的方法
Aug 15 Python
python购物车程序简单代码
Apr 18 Python
详谈Python3 操作系统与路径 模块(os / os.path / pathlib)
Apr 26 Python
Python3实现定时任务的四种方式
Jun 03 Python
pytorch索引查找 index_select的例子
Aug 18 Python
基于Pytorch SSD模型分析
Feb 18 Python
解决更改AUTH_USER_MODEL后出现的问题
May 14 Python
python求numpy中array按列非零元素的平均值案例
Jun 08 Python
opencv实现图像平移效果
Mar 24 Python
Python还能这么玩之用Python做个小游戏的外挂
Jun 04 Python
Pytorch中使用ImageFolder读取数据集时忽略特定文件
Mar 23 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面向对象全攻略 (一) 面向对象基础知识
2009/09/30 PHP
PHP判断远程图片或文件是否存在的实现代码
2014/02/20 PHP
浅析php单例模式
2014/11/25 PHP
部署PHP时的4个配置修改说明
2015/10/19 PHP
php 读取输出其他文件的实现方法
2016/07/26 PHP
安装docker和docker-compose实例详解
2019/07/30 PHP
基于Jquery的跨域传输数据(JSONP)
2011/03/10 Javascript
javascript实现的字符串与十六进制表示字符串相互转换方法
2015/07/17 Javascript
详解javascript new的运行机制
2016/01/26 Javascript
浏览器检测JS代码(兼容目前各大主流浏览器)
2016/02/21 Javascript
JSON 的正确用法探讨:Pyhong、MongoDB、JavaScript与Ajax
2016/05/15 Javascript
Bootstrap开发实战之响应式轮播图
2016/06/02 Javascript
使用递归遍历对象获得value值的实现方法
2016/06/14 Javascript
在JavaScript中调用Java类和接口的方法
2016/09/07 Javascript
Angular.js之作用域scope'@','=','&'实例详解
2017/02/28 Javascript
HTML中使背景图片自适应浏览器大小实例详解
2017/04/06 Javascript
Angular4学习笔记router的简单使用
2018/03/30 Javascript
vue 实现移动端键盘搜索事件监听
2019/11/06 Javascript
[05:09]DOTA2-DPC中国联赛2月22日Recap集锦
2021/03/11 DOTA
Python中对象迭代与反迭代的技巧总结
2016/09/17 Python
Python中标准模块importlib详解
2017/04/16 Python
浅谈django model的get和filter方法的区别(必看篇)
2017/05/23 Python
python中import与from方法总结(推荐)
2019/03/21 Python
Python面向对象进阶学习
2019/05/21 Python
在python中画正态分布图像的实例
2019/07/08 Python
利用Python绘制有趣的万圣节南瓜怪效果
2019/10/31 Python
Python读取Excel一列并计算所有对象出现次数的方法
2020/09/04 Python
HTML5地理定位实例
2014/10/15 HTML / CSS
国际旅客访问北美最大的汽车租赁提供商:Alamo Rent A Car
2018/06/13 全球购物
台湾母婴用品限时团购:妈咪爱
2018/08/03 全球购物
销售代表求职自荐信
2013/10/01 职场文书
春季运动会开幕词
2015/01/28 职场文书
检讨书范文大全
2015/05/07 职场文书
2015年暑假生活总结
2015/07/13 职场文书
2019学生会干事辞职信
2019/06/27 职场文书
vue项目两种方式实现竖向表格的思路分析
2021/04/28 Vue.js