Tqdm,一个让 Python 不再无聊的幕后英雄

news/2024/10/18 12:25:17/

大家好!我是爱摸鱼的小鸿,关注我,收看每期的编程干货。

一个简单的库,也许能够开启我们的智慧之门,
一个普通的方法,也许能在危急时刻挽救我们于水深火热,
一个新颖的思维方式,也许能激发我们无尽的创造力,
一个独特的技巧,也许能成为我们的隐形盾牌……


神奇的 Python 库之旅,第 2

目录

    • 一、Tqdm 简介和安装
    • 二、Tqdm 高级用法
    • 三、Tqdm 应用场景
    • 四、Tqdm 进阶技巧
    • 五、作者Info

一、Tqdm 简介和安装

你是否厌倦了冰冷的代码和无趣的编程过程?是否渴望一种能够让编程变得更加生动有趣的方式?

等待程序执行过程中无疑是一种痛苦的煎熬,有时候不知道是卡 bug 还是咋了,可能吃完饭回来程序就崩了,这种感觉,大概只有程序员能懂了。。。
在这里插入图片描述

而在编程的世界里,有一些小小的工具或库,它们或许不够炫酷,但却有着令人惊喜的魔力。

今天,我们要探讨的主角就是这样一个“小而美”的 Python 库——Tqdm,它或许看起来普普通通,但当你真正体验过它的魅力后,你会发现它是一颗闪耀的星星

Tqdm,全称“taqaddum”,是阿拉伯语中“进展”或“进步”的意思,正如其名,tqdm 致力于让你的代码执行过程更加直观、更有进展。

它是一个快速、可扩展的 Python 进度条工具,可以轻松地将迭代过程中的进度可视化,让你一目了然地了解代码的执行情况,为你的代码运行过程增添一份魔法般的感觉

安装 tqdm 非常简单,只需要使用 pip 命令即可:

python">pip install tqdm

安装完成后,我们可以尝试一些基本的用法,比如:

python">from tqdm import tqdm
import time
import randomfor i in tqdm(range(20)):time.sleep(random.random())  # 模拟耗时操作

这段代码会展示一个美观的进度条,让你的代码运行过程不再无聊,效果如下:

python"> 75%|███████▌  | 15/20 [00:07<00:02,  2.07it/s]

Github 项目地址:

python">https://github.com/tqdm/tqdm

接下来说说 Tqdm 的高级用法。

二、Tqdm 高级用法

除了基本的进度条显示外,tqdm 还支持许多高级用法,比如显示额外信息、定制化进度条样式等。例如,我们可以这样使用 tqdm :

python">from tqdm import tqdm
import timewith tqdm(total=100, desc='Processing', unit='items') as pbar:for i in range(100):time.sleep(0.1)  # 模拟耗时操作pbar.update(1)  # 更新进度条pbar.set_postfix({'status': 'completed'})

这段代码展示了一个带有描述和单位的进度条,同时还会显示任务完成状态,让进度追踪变得更加直观。

三、Tqdm 应用场景

tqdm 不仅可以用于 Python 的基本编程,还可以在数据处理、机器学习、科学计算等领域发挥重要作用。比如,在数据处理中,我们可以这样使用 tqdm :

python">import pandas as pd
from tqdm import tqdm# 创建一个示例DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],'Age': [25, 30, 35, 40]}
df = pd.DataFrame(data)# 使用Tqdm美化数据处理过程
for index, row in tqdm(df.iterrows(), total=len(df)):# 在这里进行数据处理操作pass

通过 tqdm ,我们不仅可以清晰地了解数据处理的进度,还可以在处理大规模数据时更好地掌握时间。

四、Tqdm 进阶技巧

实时更新进度
除了基本用法和应用场景外,tqdm 还有一些进阶技巧,比如实时更新进度、自定义进度条样式等。这些技巧可以让我们更好地利用 tqdm ,提高编程效率。例如,我们可以这样实时更新进度条

python">from tqdm import tqdm
import timefor i in tqdm(range(100), desc='Processing', unit='items', ncols=100):time.sleep(0.1)  # 模拟耗时操作

这段代码展示了如何实时更新进度条的样式,让进度显示更加清晰。

为爬虫增添一抹色彩
通过 tqdm ,我们不仅可以监控爬虫的进度,还可以实时了解每个请求的处理情况,让爬虫之旅更加有趣

python">import requests
from tqdm import tqdm# 定义爬取函数
def crawl_website(urls):for url in tqdm(urls):# 发送请求response = requests.get(url)# 在这里进行数据处理操作pass# 待爬取的网址列表
urls = ['http://example1.com', 'http://example2.com', 'http://example3.com']# 调用爬取函数
crawl_website(urls)

通过以上示例,相信大家已经感受到 tqdm 的魅力所在了吧!它不仅让编程变得更加生动有趣,还能够提升我们的工作效率。无论是在学习、工作还是个人项目中,都可以尝试使用 tqdm 来让编程之路更加愉快!

其实只要是耗时的操作都可以用 tqdm 实现进度条,可视化展示一个优雅的处理过程,当然你也可以通过在其中加入日志(logger)或者直接打印(print)信息也可以看到程序执行的过程

更多功能可参考官方文档:

python">https://tqdm.github.io

tqdm ,一个看似普通却有着无穷魅力的 Python 库,它为我们的编程之路增添了不少乐趣和方便

五、作者Info

Author:小鸿的摸鱼日常,Goal:让编程更有趣! 专注于

Web开发、爬虫,游戏开发,数据分析、自然语言处理,AI等,期待你的关注,让我们一起成长、一起Coding!

版权说明:本文禁止抄袭、转载,侵权必究!


http://www.ppmy.cn/news/1456991.html

相关文章

hadoop学习---基于Hive的教育平台数据仓库分析案例(二)

衔接第一部分&#xff0c;第一部分请点击&#xff1a;基于Hive的教育平台数据仓库分析案例&#xff08;一&#xff09; 意向用户模块&#xff08;全量分析&#xff09;&#xff1a; 需求指标&#xff1a; 需求一: 计期内&#xff0c;新增意向客户&#xff08;包含自己录入的意…

相机2:曝光三要素之ISO(感光度)

曝光是相机的感光元件与光线接触成像的过程&#xff0c;而曝光三要素分别指的是光圈大小&#xff0c;快门速度和感光度。这三个因素都可以控制曝光量&#xff0c;同时也分别有自己的特点。 什么是感光度&#xff1f; ISO又叫感光度&#xff0c;指的是相机感光元件&#xff08;…

c语言之枚举

枚举是将一个变量的可能的值都列出来&#xff0c;但是对应的值只能是其中的一个。 枚举创建的方式 enum 枚举类型名&#xff08;值1&#xff0c;值2&#xff0c;值3&#xff0c;值n&#xff09; 如何定义枚举变量 enum 枚举类型 变量名 示例代码如下 #include<stdio.h…

对惰性提升快速降级FIFO(QD-LP-FIFO)的理解和简易代码实现

文章目录 欢迎做客泥烟の新站本文链接 对QD-LP-FIFO的理解和简易代码实现我的理解:简化的QD-LP-FIFO缓存算法实现(java版)输出从输出可以看出以下几点分析&#xff1a; 欢迎做客泥烟の新站 本文链接 &#x1f449;对QD-LP-FIFO的理解和简易代码实现 - 泥烟のMkdocs 对QD-LP-…

mac电脑如何安装python及环境搭建

&#xff08;1&#xff09;进入官网&#xff1a;Download Python | Python.org&#xff0c;根据自己电脑选择python (2)这里我选择的是mac,点击&#xff1a;macos&#xff0c;选择最近版本并点击进入 (3)选择mac版本&#xff1a; (4)点击就可以进入下载&#xff1a; (5)下载好之…

Linux 部署YUM仓库及NFS共享服务

目录 一.YUM仓库服务 YUM (Yellow dog Updater Modified) Linux系统各家厂商用的安装源 准备安装源 软件仓库的提供方式 RPM软件包的来源 构建Centos7软件仓库 在软件仓库中加入非官方RPM包组 为客户机指定YUM仓库位置 制作ftp源 服务端 (1)关闭防火墙 (2)下载vsftp…

C++多态有几种实现方式

1、重载&#xff1a;通过函数名相同但参数不同的多个函数实现不同行为。在编译时通过参数类型决定调用哪个函数。 2、重写&#xff1a;通过继承让派生类重新实现基类的虚函数。在运行时通过指针/引用的实际类型调用对应的函数。 3、编译时多态&#xff1a;通过模板和泛型实现…

QT creator5.0转qt6.0(QAbstractSocket::SocketError)‘ is not allowed解决方法

问题描述&#xff1a; //tcp_client.cpp:19:23: Static_cast from SocketError (QAbstractSocket::*)() const to void (QTcpSocket::*) //(QAbstractSocket::SocketError) is not allowed 原因分析&#xff1a; QtNetwork中的错误信号error换成了errorOccurred QT5.0 con…