Python之tqdm

本文介绍了Python库tqdm的用途,它主要用于显示进度条。tqdm使用简单,可以轻松封装迭代器来实现进度提示,适用于长循环中。tqdm在不同环境下无需依赖,开销小,且具有阿拉伯语和西班牙语的有趣含义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python之tqdm

Python之tqdm主要作用是用于显示进度,使用较为简单:

  • 创建进度条;
  • 关闭进度条;

注意比较有意思的一点是关于tqdm来源问题:
Tqdm在阿拉伯语表示进步,在西班牙语中表示我非常爱你。是一个快速,可扩展的Python进度条,可以在Python长循环中添加一个进度提示信息,用户只需要封装任意的迭代器tqdm(iterator)即可完成进度条。相比ProgressBar来说Tqdm的开销非常低,同时Tqdm可以在任何环境中不需要任何依赖运行

def calculate_weigths_labels(dataset, dataloader, num_classes):
    # Create an instance from the data loader
    z = np.zeros((num_classes,))
    # Initialize tqdm
    tqdm_batch = tqdm(dataloader)
    print('Calculating classes weights')
    for sample in tqdm_batch:
        y = sample['label']
        y = y.detach().cpu().numpy()
        mask = (y >= 0) & (y < num_classes)
        labels = y[mask].astype(np.uint8)
        count_l = np.bincount(labels, minlength=num_classes)
        z += count_l
    tqdm_batch.c
### 使用 `tqdm` 创建进度条 #### 导入库并初始化简单进度条 为了在 Python 中创建进度条,首先需要安装并导入 `tqdm` 库。对于基本用途来说,只需要将要跟踪的可迭代对象传递给 `tqdm()` 函数即可。 ```python from tqdm import tqdm for i in tqdm(range(100)): pass # 这里放置实际操作代码 ``` 这段代码会在控制台显示一个动态更新的进度条,随着循环次数增加而逐渐填充[^2]。 #### 结合描述信息增强用户体验 除了基础功能外,还可以通过设置参数来使进度条更加直观易懂: - `desc`: 设置进度条前缀文字说明; - `unit`: 自定义单位名称,默认为 'it' (iteration 的缩写); - `postfix`: 显示额外的状态消息字典; ```python import time from tqdm import tqdm dataloader = range(50) with tqdm(total=len(dataloader), desc='Processing', unit='batch') as pbar: for batch_idx in dataloader: time.sleep(0.1) # 模拟耗时任务 pbar.update(1) pbar.set_postfix({'Batch Index': f'{batch_idx}'}) ``` 上述例子展示了如何利用这些选项让进度条不仅限于百分比形式,而是能够提供更丰富的上下文信息[^3]。 #### 集成到机器学习框架中的应用实例 当涉及到像 PyTorch 或 TensorFlow 这样的深度学习框架时,通常会有自己的 DataLoader 类用于批量读取数据集样本。此时可以直接将此类作为输入传入 `tqdm` 来监控整个 epoch 的执行情况。 ```python from torch.utils.data import DataLoader from torchvision.datasets import MNIST from tqdm import tqdm dataset = MNIST(root='./data', train=True, download=True) loader = DataLoader(dataset, batch_size=64) for epoch in range(num_epochs): with tqdm(loader, desc=f'Training Epoch {epoch}') as t_loader: for data, target in t_loader: output = model(data) loss = criterion(output, target) optimizer.zero_grad() loss.backward() optimizer.step() ``` 此片段体现了 `tqdm` 如何轻松融入现有工作流,在不影响原有逻辑的前提下增加了可视化的反馈机制[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值