Python第三方模块—tqdm

tqdm是一个快速的,易扩展的,动态刷新的进度条提示模块

安装

pip install -i https://mirrors.aliyun.com/pypi/simple tqdm

使用方式

基于迭代器自动更新

向tqdm传入可迭代类型,示例1

import time
from tqdm import tqdm

for i in tqdm(range(100)):
    # IO, 模型训练, 爬虫等耗时操作
    time.sleep(0.05)

在这里插入图片描述

在这里插入图片描述

示例2:迭代时更新描述信息

import time
from tqdm import tqdm

char_list = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
progress_bar = tqdm(char_list)

for char in progress_bar:
    time.sleep(0.8)
    progress_bar.set_description(str(char))

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

手动更新进度

法1:使用with语句,每次迭代调用progress_bar.update(n)更新进度,参数n表示每次更新的增量

import time
from tqdm import tqdm

total = 100

with tqdm(total=total) as progress_bar:
    for i in range(total):
        time.sleep(0.05)
        # 手动更新进度, 参数n表示每次更新多少增量
        progress_bar.update(1)

在这里插入图片描述

在这里插入图片描述

法2:直接将tqdm赋值给变量如progress_bar,每次迭代调用progress_bar.update(n)更新进度

  • 注意,如果采用这种方式,在进度条代码执行结束后,必须通过del progress_barprogress_bar.close()释放progress_bar的资源
import time
from tqdm import tqdm

total = 100

progress_bar = tqdm(total=total)
for i in range(10):
    time.sleep(0.04)
    # 手动更新进度, 参数n表示每次更新多少增量
    progress_bar.update(10)
# 注意必须通过del或close()释放progress_bar的资源
progress_bar.close()
# del progress_bar

在这里插入图片描述
在这里插入图片描述

示例:处理超大文件的数据并实时展示处理进度(不管是怎么处理的,先显示进度)

import time
from tqdm import tqdm

total = 10 * 1024 * 1024    # 共10M数据
progress_bar = tqdm(total=total, unit='B', unit_scale=True, unit_divisor=1024)
for i in range(100):    # 共处理100次
    time.sleep(0.1)
    progress_bar.update(0.1 * 1024 * 1024)   # 每次处理0.1M
progress_bar.close()

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

命令行

# 统计所有python脚本的行数
time find . -name '*.py' -exec cat \{} \; | tqdm | wc -l
857366it [00:03, 246471.31it/s]
857365
 
real    0m3.585s
user    0m0.862s
sys     0m3.358s

参数

tqdm(iterable=None, desc=None, total=None, leave=True, file=None,
     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, bar_format=None, initial=0,
     position=None, postfix=None, unit_divisor=1000, write_bytes=False,
     lock_args=None, nrows=None, colour=None, delay=0.0, gui=False,
     **kwargs)
  • iterable:要迭代的对象,如果设置了则自动更新进度条;否则必须update手动更新
  • desc:进度条前边的提示字符串,会自动添加冒号:
  • total:迭代的次数,如果传入了iterable,则内部为其赋值为len(iterable)
  • leaveTrue显示所有进度条;否则只显示第一个
  • file:类型为io.TextIOWrapperio.StringIO,指定输出到哪里
  • nclos:输出信息的宽度
  • mininterval:进度条最小显示更新间隔
  • maxinterval:进度条最大显示更新间隔
  • miniters:迭代中显示最小进度的间隔,若为0并指定dynamic_miniters,会自动调整到min_interval;若>0则跳过指定数目的迭代
  • ascii:默认False使用平滑块;否则使用ascii字符,指定字符时长度须>2
  • disable:默认False启用进度条;否则禁用
  • unit:迭代的单位、单元。默认it为轮数;B为字节
  • unit_scale:默认False禁用缩放;否则启用缩放,并在国际单一性系统标准之后添加一个度量前缀(kilo、mega等);如果有任何其他非零数,将按比例总计和n
  • dynamic_ncols:默认Falsenclos参数生效;否则nclos无效
  • smoothing:以指数级的速度进行增长,取值为[0, 1]
  • bar_format:自定义进度条显示格式,但可能会影响性能。具体格式参考官网
  • initial:初始计数值
  • position:偏移量,从0开始
  • postfix:类型为dict,在进度条的最后位置显示额外信息
  • unit_divisor:单位进位的进制,只有unit_scale=True时才有效;在表示计算机数据大小时,一般手动设置为1024而不是默认的1000
  • write_bytes:默认False写入的是unicode;否则写入字节
  • lock_args:类型为tuple,可获取中间输出
  • gui:默认False;否则使用tqdm.gui.tqdm代替,会使用matplotlib的动画输出

方法

  • update(n=1):手动更新进度条信息

    • n:更新进度的增量,默认为1
  • close():清除并关闭进度条

  • clear():清除当前显示的进度条

  • refresh(nolock=False, lock_args=None):强制刷新当前的进度条

    • no_lockFalse表示调用acquire方法上锁,默认;True表示不上锁
    • lock_args:类型为tuple,传入到内部的函数acquire,指定后只有acquire返回True才会显示进度条
  • unpause():重新启动上一次打印时tqdm的计数器

  • reset(total=None):重新指定total为0以重复利用

    • total:新的进度条的total
  • set_description(desc=None, refresh=True):设置进度条的描述字符串,字符串后自动添加冒号:

    • desc:进度条的描述字符串
    • refresh:强制刷新,如果为True,其实就是调用refresh方法
    progress_bar.set_description('当前进度')
    

    在这里插入图片描述

  • set_description_str(desc=None, refresh=True):设置进度条的描述字符串,字符串后不添加:

  • set_postfix(ordered_dict=None, refresh=True, **kwargs):设置进度条最后的提示信息,以字典的形式传入k-v

    • ordered_dict:显示在进度条后面位置的k-v字典
    • refresh:强制刷新
    • **kwargs:其他参数
    progress_bar.set_postfix({'name': 'Azir', 'age': 23})
    

    在这里插入图片描述

  • set_postfix_str(s='', refresh=True):设置进度条最后的提示信息字符串

    • s:显示在进度条最后一个位置的字符串
    • refresh:强制刷新
    progress_bar.set_postfix_str('连接正常')
    

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值