使用Python tqdm让你的代码进度条更丰富有趣

在编写长时间运行的代码时,我们常常会使用进度条来实时显示任务的进度。Python提供了许多实现进度条的库,其中tqdm是一个高度可定制的库,它可以让你的代码进度条更加丰富有趣。

一、简介

tqdm是一个Python的进度条库,它可以在循环迭代时实时显示任务的进度,支持多种方式的进度条样式,可以自定义进度条的位置、颜色、速度等。安装tqdm库十分简单,只需在终端输入以下命令:

    pip install tqdm

安装完成后,我们可以直接在代码中使用它,来创建漂亮的进度条。

二、基础使用

让我们首先看一下最简单的使用方式。下面的代码演示了tqdm在循环中的基本用法:

    # 导入tqdm模块
    from tqdm import tqdm
    
    # 执行循环
    for i in tqdm(range(1000)):
        # 这里是循环的操作

以上代码使用了tqdm工具实现了一个简单的进度条。通过tqdm函数,我们将range(1000)传递进去,然后在for循环中使用tqdm遍历range(1000)中的元素。tqdm将自动显示进度条,并实时更新进度。我们还可以仅仅使用tqdm函数,如下所示:

    # 导入tqdm模块
    from tqdm import tqdm
    
    # 执行循环
    for i in tqdm(range(1000)):
        # 这里是循环的操作

此时会使用默认样式显示进度条,如下所示:

  5%|███▏                                                                             | 50/1000 [00:00<00:01, 489.96it/s]

默认样式比较简单,只有一个进度条,但我们可以使用一些其他的样式来更好地展示进度条,后面会提到。

三、自定义样式

tqdm是一个高度可定制的库,你可以使用各种可用参数来定制进度条。下面介绍一些可用的参数:

  • total:表示迭代次数。
  • position:进度条的位置。
  • desc:进度条的描述信息。
  • unit:进度条每个单位的描述信息。
  • bar_format:进度条的样式,可以自定义。

下面的代码演示了如何使用以上参数进行自定义。

    # 导入tqdm模块
    from tqdm import tqdm
    
    # 使用自定义样式
    with tqdm(total=100, position=0, desc='Downloading', unit='file') as pb:
        for i in range(100):
            pb.update(1)

以上代码定义了进度条总共需要迭代100次,进度条显示在第一行,进度条的描述为’Downloading’,每个单位为’file’。而pb.update(1)则表示迭代次数加1。这段代码的效果如下:

Downloading: 100%|█████████████████████████████████████████████████████████████████████| 100/100 [00:00<00:00, 4811.35it/s]

可以看到,我们自定义的样式不仅包含了进度条,还有进度条当前的百分比,已处理的文件数、总文件数、处理速度等信息。所有这些信息都可以在bar_format这个参数中进行自定义。

四、更多自定义样式

tqdm提供了许多内置的进度条样式,我们可以从中选择适合自己项目的样式。下面是一些常见的样式:

  • ‘bar’: 进度条样式,如[=== ]
  • ‘barh’: 水平样式,如[= ]
  • ‘progress’: 进度和百分比
  • ‘percentage’: 进度百分比
  • ‘count’: 进度条计数
  • ‘n’: 显示n的当前值

在我们的代码中,可以设置如下参数进行自定义样式:

    # 导入tqdm模块
    from tqdm import tqdm
    
    # 使用进度计数样式
    with tqdm(range(1000), desc='Processing', unit='document', bar_format='{l_bar}{bar:20}{r_bar}{bar:-20b}') as pb:
        for i in pb:
            # 这里是循环的操作
        pb.update(1)

以上代码使用了默认的样式,但是在此基础上设置了进度条的左边缘、进度条、右边缘和进度条两端之间的长度分别为1、20、1、20。效果如下:

Processing: 100%|████████████████████████████████████████████████████████████████| 1000/1000 [00:00<00:00, 44730.08document/s]

除了基本样式之外,我们还可以使用tqdm提供的更丰富的样式,如下所示:

    # 导入tqdm模块
    from tqdm import tqdm
    
    # 使用设置颜色样式
    with tqdm(range(100), bar_format='\x1b[32m{bar}\x1b[0m') as pb:
        for i in pb:
            # 这里是循环的操作
            pb.set_postfix({'process': i})

以上代码使用了绿色的进度条样式,并且在进度条右边显示了当前进度。效果如下:

 35%|██████████████████████████▋                                                | 35/100 [00:00<00:00, 343.92it/s, process=35]

可以看到,我们的进度条不仅可以改变颜色,还可以显示进度条右边的其他信息。

五、总结

使用Python tqdm库可以让你的代码进度条更加丰富多彩,许多内置的样式可以让我们自定义不同的进度条样式。通过tqdm,我们能够更好地把握任务进度,让编写代码更加愉快。

如果想要学习更多关于tqdm的使用,可以参考它的官方文档: https://github.com/tqdm/tqdm

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/285053.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-22 15:43
下一篇 2024-12-22 15:43

相关推荐

  • Python官网中文版:解决你的编程问题

    Python是一种高级编程语言,它可以用于Web开发、科学计算、人工智能等领域。Python官网中文版提供了全面的资源和教程,可以帮助你入门学习和进一步提高编程技能。 一、Pyth…

    编程 2025-04-29
  • 掌握magic-api item.import,为你的项目注入灵魂

    你是否曾经想要导入一个模块,但却不知道如何实现?又或者,你是否在使用magic-api时遇到了无法导入的问题?那么,你来到了正确的地方。在本文中,我们将详细阐述magic-api的…

    编程 2025-04-29
  • Codemaid插件——让你的代码优美整洁

    你是否曾为了混杂在代码里的冗余空格、重复代码而感到烦恼?你是否曾因为代码缺少注释而陷入困境?为了解决这些问题,今天我要为大家推荐一款Visual Studio扩展插件——Codem…

    编程 2025-04-28
  • Python左补0,让你的数据更美观

    本文将从以下几个方面,详细阐述Python左补0的作用及使用方法: 一、什么是Python左补0 在Python中,数据在输出时如果希望达到一定的美观效果,就需要对数字进行左补0,…

    编程 2025-04-27
  • 昆明爱因森会计培训:打造你的财务管理佳绩

    本文将从以下几个方面,详细阐述昆明爱因森会计培训的特点及其课程设置。 一、专业师资 昆明爱因森会计培训拥有一支高素质的教师团队,他们都具备很高的教学经验与实际工作能力,且熟知国内外…

    编程 2025-04-27
  • Android Java Utils 可以如何提高你的开发效率

    Android Java Utils 是一款提供了一系列方便实用的工具类的 Java 库,可以帮助开发者更加高效地进行 Android 开发,提高开发效率。本文将从以下几个方面对 …

    编程 2025-04-27
  • 用vuefavicon管理你的页面icon标签

    一、什么是vuefavicon vuefavicon是一种Vue.js插件,用于动态管理网站的favicon图标。通常情况下,我们会将网站的icon标签放置在html文档的head…

    编程 2025-04-25
  • 用c++实现信号量操作,让你的多线程程序轻松实现同步

    在多线程编程中,线程之间的同步问题是非常重要的。信号量是一种解决线程同步问题的有效机制。本文将介绍如何使用C++实现信号量操作,让你的多线程程序轻松实现同步。在介绍实现方法之前,我…

    编程 2025-04-25
  • POC环境:构建你的漏洞验证平台

    一、POC环境基础概念 POC(Proof of Concept)环境是指基于特定漏洞的验证平台,是信息安全研究的重要组成部分。其主要目的是为了漏洞检测、漏洞复现、漏洞演示和漏洞攻…

    编程 2025-04-24
  • SQLCastAs: 让你的SQL语句更灵活

    一、SQLCastAs简介 SQLCastAs是一个针对SQL语句的函数,它可以将一个数据类型转换为另一个数据类型。当你需要比较两个不同数据类型的数据时,你可以使用SQLCastA…

    编程 2025-04-24

发表回复

登录后才能评论