大家好,我是“橙子”。今天我们来聊聊一个非常实用的 Python 库 —— tqdm。如果你曾经编写过需要较长时间运行的 Python 脚本,你一定会发现,能够看到进度条会让人心里有数,工作更高效。tqdm 就是为了解决这个问题而诞生的,它可以非常优雅地为你提供一个进度条,让你实时看到任务执行的进度,既美观又实用。
今天我们将一起学习如何使用 tqdm 来提升你的开发体验。无论你是在处理数据,还是执行长时间的计算任务,tqdm 都能帮助你轻松查看进度。
一、安装 tqdm
首先,我们需要安装 tqdm 库。在终端或命令行中执行以下命令:
pip install tqdm
安装完成后,我们就可以开始使用 tqdm 来为我们的 Python 代码添加进度条了!
二、基本用法:在循环中添加进度条
tqdm 的使用非常简单,最基本的功能就是给一个循环加上进度条。让我们来看一个简单的例子。
给 for 循环加进度条
from tqdm import tqdm
import time
# 模拟一个需要长时间执行的任务
for i in tqdm(range(10)):
time.sleep(0.5) # 模拟任务
代码解释
from tqdm import tqdm
:首先我们导入 tqdm。tqdm(range(10))
:我们将range(10)
传递给tqdm
,这会生成一个带有进度条的循环。time.sleep(0.5)
:为了模拟一个需要耗时的任务,我们让每次迭代暂停 0.5 秒。
运行代码后,你会看到一个进度条,实时显示当前的进度。
小贴士
tqdm
会自动根据任务的迭代次数来计算进度,不需要手动设置。进度条的长度和显示内容可以自动调整,默认情况下,tqdm 会显示已完成的百分比、已用时间、估计剩余时间等信息。
三、进度条的更多定制:参数设置
tqdm 不仅仅是一个简单的进度条,它还提供了丰富的参数,帮助我们定制进度条的外观和行为。让我们来看看常用的几个参数。
自定义进度条的描述和总数
from tqdm import tqdm
import time
# 设置描述文字和进度条总数
for i in tqdm(range(100), desc="数据处理", total=100, ncols=100):
time.sleep(0.1)
代码解释
desc
:设置进度条前面显示的描述文字,这里是 “数据处理”。total
:指定总的迭代次数,tqdm 会根据这个值来计算进度。ncols
:设置进度条的长度(字符数)。如果不设置,tqdm 会自动调整。
运行这段代码,你会看到一个宽度为 100 个字符的进度条,且前面会显示描述文字“数据处理”。
小贴士
ncols
设置的是进度条的最大宽度,如果终端窗口太小,tqdm 会自动调整进度条的长度。desc
可以帮助你在显示多个进度条时区分不同的任务,尤其是在并行执行时特别有用。
四、在长时间任务中显示进度:使用 tqdm
包裹文件操作
除了循环,tqdm 还可以用于长时间运行的文件操作或其他任务。假设你要读取一个非常大的文件,使用 tqdm 包裹 open()
可以实时显示文件读取的进度。
用 tqdm 包裹文件读取进度
from tqdm import tqdm
# 假设读取一个大文件
with open('large_file.txt', 'r') as f:
for line in tqdm(f, desc="读取文件"):
# 这里模拟每行数据的处理
pass
代码解释
tqdm(f, desc="读取文件")
:我们将打开的文件对象f
传递给 tqdm,tqdm 会自动跟踪文件读取的进度并显示进度条。在这个例子中, tqdm
会根据文件的总行数来计算进度。
小贴士
如果你需要显示其他类型的进度(如写入文件的进度),你也可以使用 tqdm
来包裹相关操作。记得在大文件读取时,最好一次读取一行,以免内存占用过高。
五、使用 tqdm 进行多任务进度条显示
有时候,你可能需要显示多个任务的进度。比如你同时在处理多个数据集或执行多个任务。tqdm 支持多个进度条并行显示。
多任务进度条
from tqdm import tqdm
import time
# 任务1
task1 = tqdm(range(5), desc="任务1")
for i in task1:
time.sleep(1)
# 任务2
task2 = tqdm(range(7), desc="任务2")
for i in task2:
time.sleep(0.5)
代码解释
我们创建了两个进度条 task1
和task2
,分别表示两个独立的任务。tqdm(range(5))
和tqdm(range(7))
用来控制每个任务的进度。
小贴士
当显示多个进度条时,tqdm 会自动将它们排列在不同的行,帮助你同时监控多个任务的进度。
六、tqdm 与 pandas
配合使用
tqdm 不仅支持普通的循环,也可以和 pandas 一起使用。如果你正在处理大量数据并且使用 pandas,可以通过 tqdm.pandas()
来轻松地为你的 DataFrame 操作添加进度条。
tqdm 与 pandas 配合使用
import pandas as pd
from tqdm import tqdm
# 启用 tqdm 进度条
tqdm.pandas()
# 创建一个 DataFrame
df = pd.DataFrame({'A': range(1000)})
# 使用进度条处理 DataFrame
df['B'] = df['A'].progress_apply(lambda x: x * 2)
代码解释
tqdm.pandas()
启用 pandas 的进度条功能。progress_apply()
用于对 DataFrame 的列应用函数时,显示进度条。
小贴士
progress_apply()
是apply()
方法的增强版,它会自动显示进度条,帮助你实时了解数据处理的状态。
七、实际应用场景
tqdm 的应用场景非常广泛,以下是几个常见的应用:
数据处理:当你在进行数据清洗或转换时,可以通过进度条来监控任务的完成情况。 爬虫程序:当你使用 Python 编写爬虫抓取数据时,进度条可以帮助你知道抓取的进度,避免任务卡住。 机器学习训练:在训练模型时,进度条可以帮助你实时监控训练进度,尤其是在训练时间较长的情况下。
结尾
今天我们一起学习了 tqdm 库,它是一个非常强大且易于使用的进度条工具,可以帮助我们实时监控 Python 程序的执行进度。无论是在循环、文件读取,还是在 pandas 操作中,tqdm 都能带来很好的用户体验。
记得动手敲代码,使用 tqdm 为你的项目加上进度条,让你的 Python 编程更加高效和愉快!祝大家学习愉快,Python 学习节节高!