如何使用Python的进度条?

在使用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)

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

import time
from tqdm import tqdm, trange

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

【例子】循环外的实例化允许手动控制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)

【例子】

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)

基于手动进行更新

【例子】使用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)

如果提供了可选变量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()

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)

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


(0)

相关推荐

  • 你必须尝试的20个 Python 库

    Python 是编程领域中最常用的编程语言之一,也是初学者的最佳选择之一.Python 吸引人们的地方在于它的简单性和易用的语法.是一个直译语言,所以它变得更容易发现代码中的错误.它是由 Guido ...

  • tqdm-让您的循环显示一个智能进度条的python库

    tqdm源自阿拉伯语taqaddum(تقدّم),意为"进步",是西班牙语中的"我非常爱你"的缩写(te quiero demasiado). 立即让您的循环 ...

  • 1.7 万 Star!一个简单实用的 Python 进度条库

    小白带你学编程 昨天 来源:Python开发者 [导读]:有的 Python 程序较大,执行需要花费较长的时间,有的用户在"盲目"地等待运行结果,但又不能明确知道程序进展到什么程度 ...

  • 用Python给你的代码上个进度条吧 | 【代码也要面子的】

    前言 最近在跑一些代码的时候,很烦... 因为有时候不知道这段程序什么时候能执行完,现在执行哪里了,如果报错或者二进入死循环,那不是非常的浪费时间. 因此,我在想到底该怎么办才能知道这些,就开始找,原 ...

  • 详细介绍Python进度条tqdm的使用

    更新时间:2019年07月31日 10:44:57   作者:修炼之路这篇文章主要介绍了详细介绍Python进度条tqdm的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习 ...

  • alive progress-具有实时吞吐量和非常酷的动画新型的进度条python库

    alive progress是一种具有实时吞吐量和非常酷的动画新型的进度条python库. 您是否曾经在远程ssh会话中发现自己,做了一些冗长的操作,然后不时地感到需要进入[输入]以确保您不会失去连接 ...

  • 2020年的进度条已过三分之二

    上周日逛街看电影,三里屯商区熙熙攘攘,热门的店铺人来人往,shack shake汉堡店门口排队时间接近两小时,影院相邻座椅上的封条还没有拆除,但不妨碍大家积极买票贡献力量. 站在街头,看着川流不息的人 ...

  • 在逃人员混进派出所打听破案进度,民警:进度条瞬间拉满

    犯罪分子为了逃避打击 看见警察叔叔一般都会绕道走 然而最近,江苏扬州一名在逃人员 不仅没有逃避警察叔叔 甚至还主动出现在了派出所 不过他并不是去投案自首的 而是为了 打听案情 火眼金睛的民警 怎么可能 ...

  • wps表格百分比怎么显示颜色-百分比进度条的做法

    当我们在进行一个项目完成度的统计时,会用到完成了百分之多少,如果多个项目对比呢?看完成了百分之多少是不是有些麻烦,我们可以给它加上颜色,也就是百分比进度条,加上颜色后对进度条哪个长哪个短哪个完成多少就 ...

  • 用rsync命令和scp命令实现本机带进度条提示拷贝

    rsync命令 #rsync -av --progress /mnt/yidong2/full20100526.tar.gz /mnt/yidong1/ [以上命令] 可以实现本机带进度条提示拷贝,可 ...