美文网首页@IT·互联网
关于 python 进度条神器:tqdm,你了解多少

关于 python 进度条神器:tqdm,你了解多少

作者: shengjk1 | 来源:发表于2024-03-03 13:16 被阅读0次

    背景

    经常使用 Jupyter Notebook 的同学,免不了要安装 新 的 python 模块。这个时候往往就会陷入两难的境地

    1. 如果直接使用 Jupyter Notebook 安装,看不到进度
    2. 如果使用命令行安装,麻烦,还得切换到命令行。


    有没有一种方式,即能通过 Jupyter Notebook 安装 python 模块,并且还能看到进度条。这个时候发现了 python 超好用的 tqdm 包

    tqdm 介绍

    tqdm 作用

    tqdm` 是一个 Python 的进度条库,可以在 Python 的循环中添加一个进度条,以便在终端中实时显示进度。它可以用于任何可迭代对象,如列表、元组、字典、文件等。

    tqdm 安装

    pip install tqdm
    

    tqdm 使用

    可以应用多个方面,主要是下面三个:

    基于 iterable

    from tqdm import tqdm
    from time import sleep
    
    for char in tqdm(range(100)):
        sleep(0.25)
    

    等同于

    from tqdm import trange
    from time import sleep
    
    for i in trange(100):
        sleep(0.25)
    

    可以手动添加一些描述,比如:

    from tqdm import trange
    from time import sleep
    
    pbar=trange(100)
    for i in pbar:
        sleep(0.25)
        pbar.set_description("Processing %s" % i)
    

    手动控制

    from tqdm import tqdm
    
    with tqdm(total=100) as pbar:
        for i in range(10):
            sleep(0.1)
            pbar.update(10)
    

    命令行

    find . -name '*.py' -type f -exec cat \{} \; |
        tqdm --unit loc --unit_scale --total 857366 >> /dev/null
    

    这个命令用于计算当前目录及其子目录中所有 Python 文件的代码行数。以下是命令的详细解释:

    • find . -name '*.py' -type f:这个命令在当前目录及其子目录中查找所有扩展名为 .py 的文件。
    • -exec cat \{} \;:这个命令对 find 命令找到的每个文件执行 cat 命令。{} 是文件名的占位符,\; 表示命令的结束。
    • |:这是一个管道符号,将 find 命令的输出重定向到 tqdm 命令。
    • tqdm --unit loc --unit_scale --total 857366:这个命令使用 tqdm 库在 cat 命令执行时显示进度条。--unit loc 选项将计量单位设置为“loc”(代码行数),--unit_scale 将输出缩放到更易读的格式。--total 857366 选项设置代码行数的总数为 857,366,用于计算进度条的进度。
    • >> /dev/null:这个命令将 tqdm 命令的输出重定向到 /dev/null,这会丢弃输出。这样做是为了防止进度条在终端上产生干扰。

    tqdm 原理

    tqdm 通过记录循环的总次数和当前已完成的次数来判断进度。具体来说,它会在循环开始时获取循环的总次数,然后在每次循环中更新已完成的次数,从而计算出当前的进度。

    tqdm 支持多种方式来获取循环的总次数,包括:

    1. 通过传入一个可迭代对象来获取总次数,例如列表、元组、集合等。
    2. 通过传入一个整数来指定总次数,例如 range 函数。
    3. 通过传入一个生成器函数来动态生成循环次数。

    在每次循环中,tqdm 会更新已完成的次数,并计算出当前的进度。它会根据已完成的次数和总次数来计算进度百分比,并根据进度百分比来更新进度条的显示。同时,tqdm 还会根据已完成的时间和已完成的次数来估算剩余时间,并在进度条中显示出来。

    总之,tqdm 通过记录已完成的次数和总次数来判断进度,并根据进度百分比和剩余时间来更新进度条的显示。

    相关文章

      网友评论

        本文标题:关于 python 进度条神器:tqdm,你了解多少

        本文链接:https://www.haomeiwen.com/subject/rfjczdtx.html