zoukankan      html  css  js  c++  java
  • Python常用库—tqdm

    tqdm

    Tqdm库比较常用,用于显示进度条。

    简单用法:

     from tqdm import tqdm
    
     for i in tqdm(range(2)):  
     pass
    

    100%|███████████████████| 2/2 [00:00<00:00, 1998.72it/s]

      从上面可以看到生成一个长度为2的列表传入tqdm中,在for中迭代,此时输出了进度条,这里tqdm全部使用了默认参数,默认进度条样式就是如上所示;通常默认进度条所输出的信息并不满足我们的需求,tqdm还可以定制进度条样式;
      tdqm数据参数支持的数据类型是可迭代的对象iterable,在Python中默认的可迭代对象有:list、str、tuple、dict、file、xrange等,当然还有自定义可迭代对象;

    tqdm参数

    desc=None,         str类型,作为进度条说明
    total=None,         预期的迭代次数     
    file=None,          输出方式,默认为sys.stderr
    ncols=None,        进度条长度
    mininterval=0.1,     进度条最小的更新间隔,单位秒,默认:0.1
    maxinterval=10.0,    进度条最大更新间隔,单位秒,默认:10
    unit='it',            单位,默认it每秒迭代数
    bar_format=None,   进度条格式
    postfix             字典形式信息,例如:速度=5
    
    

      这些参数为相对比较常用的参数,并且全部都是可选参数;在自定义进度条当中比较重要的的一个参数为:bar_format,用于定义进度条的具体格式,所包含的具体数据信息;
      下面主要介绍这个参数的具体用法;

        Specify a custom bar string formatting. May impact performance.
        [default: '{l_bar}{bar}{r_bar}'], where
        l_bar='{desc}: {percentage:3.0f}%|' and
        r_bar='| {n_fmt}/{total_fmt} [{elapsed}<{remaining}, '
          '{rate_fmt}{postfix}]'
        Possible vars: l_bar, bar, r_bar, n, n_fmt, total, total_fmt,
          percentage, elapsed, elapsed_s, ncols, nrows, desc, unit,
          rate, rate_fmt, rate_noinv, rate_noinv_fmt,
          rate_inv, rate_inv_fmt, postfix, unit_divisor,
          remaining, remaining_s.
        Note that a trailing ": " is automatically removed after {desc}
        if the latter is empty.
    
    
    

    上面为tqdm对bar_format的参数描述;从中可看出:
    进度条默认格式为: {l_bar}{bar}{r_bar}
    进度条分为三部分: 中间的图形(bar),图形左边(l_bar)、图形右边(r_bar)
    l_bar: {desc}: {percentage:3.0f}%|
    bar: 进度条
    r_bar: |{n_fmt}/{total_fmt}[{elapsed}<{remaining},{rate_fmt}{postfix}]

    100%|█████████████████| 3/3 [00:03<00:00, 1.00s/it]

    percentage:百分比
    n_fmt:当前数
    total_fmt:总数
    elapsed:消耗的时间
    remaining:剩余时间
    rate_fmt:速率
    postifx:后缀字典描述
    desc、postfix默认为空;
    
    

    自定义进度条:

    1、bar_format=
    '进度:{percentage:3.0f}%|{bar}|{n}/{total}[{elapsed}<{remaining},{rate_fmt}{postfix}]'
    进度:100%|████████████████████|3/3[00:03<00:00, 1.00s/it]

    2、bar_format='进度:{percentage:3.0f}%|{bar}|{n}/{total}[{rate_fmt}{postfix}]'
    进度:100%|████████████████████|3/3[ 1.00s/it]

    批量数据进度条

    import numpy as np
    from torch.utils.data import DataLoader
    import time
    from tqdm import tqdm, tqdm_notebook
    from random import random
    
    data =np.array([1,2,3,4])
    data_loader = DataLoader(data, batch_size=2, num_workers=0, shuffle=False)
    
    iterator = tqdm(data_loader,maxinterval=10,
                    mininterval=2, ncols=80,
                   bar_format='{l_bar}|{bar}| {n_fmt}/{total_fmt} [{rate_fmt}{postfix}|{elapsed}<{remaining}]',
                   nrows=10,smoothing=0.1)
    epoch =0
    for d in iterator:
        time.sleep(2)
        epoch +=1
        print(d)
        iterator.set_description('epoch %d' %epoch)
        iterator.set_postfix_str('loss={:^7.3f}'.format(random()))
    
    

  • 相关阅读:
    Qt Creator编译问题
    『重构--改善既有代码的设计』读书笔记----Move Method
    『重构--改善既有代码的设计』读书笔记----Substitute Algorithm
    『重构--改善既有代码的设计』读书笔记----Replace Method with Method Object
    『重构--改善既有代码的设计』读书笔记----Remove Assignments to Parameters
    『重构--改善既有代码的设计』读书笔记----Split Temporary Variable
    Qt信号槽连接在有默认形参下的情况思考
    巧用Session Manager还原Firefox丢失会话
    『重构--改善既有代码的设计』读书笔记----代码坏味道【5】
    『重构--改善既有代码的设计』读书笔记----代码坏味道【4】
  • 原文地址:https://www.cnblogs.com/softlin/p/13339766.html
Copyright © 2011-2022 走看看