from tqdm import tqdm的全面解析

一、 简介

在Python语言中,tqdm库是一个提供进度条、可迭代对象和时间差等功能的库。它能够帮助程序员更加直观地了解代码的运行进度,从而更好地优化代码、提高效率。其中最常用的功能是进度条,它可以帮助程序员清晰地看到某个任务执行的进度情况和当前耗时。

二、 tqdm的基础用法

假设我们有一个需要处理的可迭代对象,例如一个长度为10的列表,并进行处理。假设我们想要在处理过程中输出进度条,代码如下:


from tqdm import tqdm
for i in tqdm(range(10)):
    do_something(i)

以上代码将在处理过程中输出一个进度条,另外还会显示当前处理的进度百分比和预计剩余时间等信息。

如果想要在处理过程中显示更多的信息,也可以自己指定格式,例如:


from tqdm import tqdm
for i in tqdm(range(10), desc="Processing", bar_format="{l_bar}{bar} | {n_fmt}/{total_fmt} [{elapsed}<{remaining}, {rate_fmt}{postfix}]"):
    do_something(i)

以上代码中,desc参数用于指定进度条前面的标题;bar_format参数用于指定进度条的格式。其中,”l_bar”表示左边的进度条,”bar”表示中间的进度条,”n_fmt”表示当前正在处理的数值,”total_fmt”表示总共需要处理的数值,”elapsed”表示当前的处理时间,”remaining”表示预计剩余时间,”rate_fmt”表示处理速度,”postfix”表示进度信息的后缀。

三、 tqdm的高级用法

除了基本用法,tqdm还提供了很多高级用法,例如子进程、文件读写、网络传输等等。下面我们介绍几种比较常用的场景:

1. 文件传输进度条

文件传输是比较常见的一个应用场景,本质上也是一种读取操作。假设我们有一个100M大小的文件,想要在上传或下载文件的过程中展示进度条。


from tqdm import tqdm
import requests

url = "http://test.com/test_file.zip"
res = requests.get(url, stream=True)

total_size = int(res.headers.get('content-length', 0)) # 获取下载文件的总大小
chunk_size = 1024 # 每次传输的大小
bar = tqdm(total=total_size, unit='B', unit_scale=True) # 初始化进度条

with open('test_file.zip', 'wb') as f:
    for chunk in res.iter_content(chunk_size=chunk_size):
        if chunk: # filter out keep-alive new chunks
            f.write(chunk)
            bar.update(len(chunk))
bar.close()

以上代码中,使用requests库下载文件,同时使用iter_content来逐步写文件,每写一个chunk后就调用tqdm实例的update方法,告诉进度条已经写了多少字节的数据。

2. 多进程并发进度条

在处理大量数据的时候,有时需要采用多进程并发的方式进行加速。比如我们需要对一个列表中的数值进行平方处理,直接使用for循环可能十分缓慢,同时需要处理大量数据,此时可以采用多进程的方式进行优化。同时在多个进程中显示一个总体进度条,类似于以下效果:


100%|██████████| 100/100 [00:15<00:00,  6.39it/s]

实现代码如下:


from tqdm import tqdm
import concurrent.futures

def doit(x):
    return x*x

def parallel_process(array, function, n_jobs=2):
    if n_jobs<=0:
        n_jobs = max(1, len(array)//(len(array)//n_jobs))

    with concurrent.futures.ProcessPoolExecutor(max_workers=n_jobs) as executor:
        results = list(tqdm(executor.map(function, array),
                            total=len(array),
                            desc=f"Multi-process computation",
                            unit="element",
                            ncols=90))
    return results

if __name__ == '__main__':
    array = list(range(100))
    result = parallel_process(array, doit)

以上代码中,我们采用concurrent.futures库中的map方法对列表array进行处理,同时使用ProcessPoolExecutor来开启多进程,每个进程处理一个元素,最后返回处理结果。在使用tqdm来显示总体进度条,同时设置ncols参数来控制展示的宽度。

四、 小结

本文介绍了tqdm的使用方法,从基础用法到高级用法都进行了详细的讲解。在实际编程过程中,tqdm可以帮助程序员实现了解程序运行进度的同时,对优化代码、提高效率、并发处理提供了简洁而powerful的助力。希望本文能够为读者提供有益的信息和引导,帮助大家更好地掌握tqdm库的使用方法。

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
ASVEQASVEQ
上一篇 2025-04-18 13:40
下一篇 2025-04-18 13:40

相关推荐

  • Python应用程序的全面指南

    Python是一种功能强大而简单易学的编程语言,适用于多种应用场景。本篇文章将从多个方面介绍Python如何应用于开发应用程序。 一、Web应用程序 目前,基于Python的Web…

    编程 2025-04-29
  • Python zscore函数全面解析

    本文将介绍什么是zscore函数,它在数据分析中的作用以及如何使用Python实现zscore函数,为读者提供全面的指导。 一、zscore函数的概念 zscore函数是一种用于标…

    编程 2025-04-29
  • 全面解读数据属性r/w

    数据属性r/w是指数据属性的可读/可写性,它在程序设计中扮演着非常重要的角色。下面我们从多个方面对数据属性r/w进行详细的阐述。 一、r/w的概念 数据属性r/w即指数据属性的可读…

    编程 2025-04-29
  • Python计算机程序代码全面介绍

    本文将从多个方面对Python计算机程序代码进行详细介绍,包括基础语法、数据类型、控制语句、函数、模块及面向对象编程等。 一、基础语法 Python是一种解释型、面向对象、动态数据…

    编程 2025-04-29
  • import turtle在Python中的用法用法介绍

    本文将从多个方面对import turtle在Python中的用法进行详细的阐述,包括基础操作、图形绘制、颜色设置、图形控制和turtle实例等,帮助读者更好的了解和使用turtl…

    编程 2025-04-28
  • Matlab二值图像全面解析

    本文将全面介绍Matlab二值图像的相关知识,包括二值图像的基本原理、如何对二值图像进行处理、如何从二值图像中提取信息等等。通过本文的学习,你将能够掌握Matlab二值图像的基本操…

    编程 2025-04-28
  • 疯狂Python讲义的全面掌握与实践

    本文将从多个方面对疯狂Python讲义进行详细的阐述,帮助读者全面了解Python编程,掌握疯狂Python讲义的实现方法。 一、Python基础语法 Python基础语法是学习P…

    编程 2025-04-28
  • 全面解析Python中的Variable

    Variable是Python中常见的一个概念,是我们在编程中经常用到的一个变量类型。Python是一门强类型语言,即每个变量都有一个对应的类型,不能无限制地进行类型间转换。在本篇…

    编程 2025-04-28
  • Zookeeper ACL 用户 anyone 全面解析

    本文将从以下几个方面对Zookeeper ACL中的用户anyone进行全面的解析,并为读者提供相关的示例代码。 一、anyone 的作用是什么? 在Zookeeper中,anyo…

    编程 2025-04-28
  • Python合集符号全面解析

    Python是一门非常流行的编程语言,在其语法中有一些特殊的符号被称作合集符号,这些符号在Python中起到非常重要的作用。本文将从多个方面对Python合集符号进行详细阐述,帮助…

    编程 2025-04-28

发表回复

登录后才能评论