tqdm用法教程
tqdm
是一个用于 Python 的快速、可扩展的进度条库,它可以在循环中显示进度,使得长时间运行的任务更加直观和易于追踪。以下是 tqdm
的基本用法和一些高级功能介绍。
安装
首先,你需要安装 tqdm
库。可以通过 pip 来安装:
pip install tqdm
基本用法
1. 在 for
循环中使用
最简单的用法是在 for
循环中包裹迭代器:
from tqdm import tqdm
for i in tqdm(range(100)):
# 模拟一些处理时间
pass
这将在控制台上显示一个进度条,随着循环的进行逐步填充。
2. 使用 tqdm.tqdm
包装任意可迭代对象
你可以将任何可迭代对象传递给 tqdm
函数来包装它:
from tqdm import tqdm
items = ["item{}".format(i) for i in range(100)]
for item in tqdm(items):
# 处理每个 item
pass
高级用法
1. 设置描述和单位
你可以通过 desc
参数设置进度条的描述文字,通过 unit
参数设置进度条的单位:
from tqdm import tqdm
for i in tqdm(range(100), desc="Processing", unit="it"):
# 模拟一些处理时间
pass
2. 手动更新进度条
如果你需要手动控制进度条的更新(例如在循环之外或异步任务中),可以创建一个 tqdm
对象并调用其 update
方法:
from tqdm import tqdm
with tqdm(total=100) as pbar:
for i in range(10):
# 模拟一些处理时间
pbar.update(10)
3. 显示额外信息
你可以在每次迭代时更新进度条的后缀信息,这对于显示额外的状态信息非常有用:
from tqdm import tqdm
for i in tqdm(range(100), desc="Processing", unit="it"):
# 更新后缀信息
tqdm.set_postfix({'loss': f'{i/100:.4f}'})
# 模拟一些处理时间
pass
4. 嵌套进度条
tqdm
还支持嵌套进度条,适合用于多层循环的情况:
from tqdm import tqdm
for i in tqdm(range(5), desc="Outer Loop"):
for j in tqdm(range(100), desc="Inner Loop", leave=False):
# 模拟一些处理时间
pass
leave=False
参数确保内部进度条在完成时不会保留,避免终端输出混乱。
其他功能
- 颜色和样式:可以通过
colour
参数设置进度条的颜色,例如colour='green'
。 - 动态刷新:对于频繁更新的进度条,可以设置
mininterval
参数来控制最小刷新间隔,防止终端输出过多。 - 文件对象:可以将进度条输出到文件或其他流对象,而不是默认的标准输出。
示例代码
以下是一个完整的示例,展示了如何使用 tqdm
跟踪一个模拟训练过程中的进度:
from tqdm import tqdm
import time
total_epochs = 10
total_batches = 100
for epoch in tqdm(range(total_epochs), desc="Epochs", position=0):
for batch in tqdm(range(total_batches), desc="Batches", position=1, leave=False):
# 模拟训练过程
time.sleep(0.01)
这个示例会在终端上显示两个嵌套的进度条,分别跟踪外层的 epochs 和内层的 batches。
希望这些信息能帮助你更好地理解和使用 tqdm
!如果你有任何具体问题或需要进一步的帮助,请随时告诉我。