Python让你的代码动起来:Python进度条神奇tqdm

2651 篇文章 15 订阅
2643 篇文章 26 订阅

你是否曾经遇到过处理大数据集、执行耗时任务或者循环迭代过程中不知道进展如何的情况?在这种情况下,一个简单而有效的解决方案是使用Python中的tqdm库,它可以帮助你轻松地添加进度条到你的代码中,让你的代码动起来!

1. 什么是tqdm?

tqdm(读作"taqadum",意为"进展")是一个快速、可扩展的Python进度条库,它可以在循环迭代、文件读写、数据处理等任务中显示实时的进度条。使用tqdm,你可以清晰地了解代码的执行进度,并获得实时的反馈,提高代码编写和调试的效率。

2. 如何使用tqdm?

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

pip install tqdm

安装完成后,你可以在代码中引入tqdm库:

from tqdm import tqdm

现在,让我们来看几个在实际接口自动化工作中使用tqdm的示例代码。

示例1:遍历接口列表并显示进度条

假设你有一个接口测试套件,其中包含多个接口需要执行。你可以使用tqdm来显示执行进度:

from tqdm import tqdm
import time
# 模拟接口列表
api_list = ["api1", "api2", "api3", "api4", "api5"]
# 遍历接口列表并显示进度条
for api in tqdm(api_list, desc="Testing APIs"):
    # 模拟接口调用
    time.sleep(1)
    # 在这里添加你的接口测试代码

 

在上述代码中,我们使用tqdm遍历接口列表,并在进度条中显示描述为"Testing APIs"。每个接口的执行都会暂停1秒钟,模拟接口调用。你可以在循环中添加你的接口测试代码。

示例2:读取大型文件并显示进度条

如果你需要处理大型文件,可以使用tqdm来显示文件读取的进度:

from tqdm import tqdm
# 打开文件并读取内容
with open("large_file.txt", "r") as file:
    # 计算文件总行数
    total_lines = sum(1 for _ in file)
# 重新打开文件并读取内容,并显示进度条
with open("large_file.txt", "r") as file:
    for line in tqdm(file, total=total_lines, desc="Processing File"):
        # 在这里添加你的文件处理代码

在上述代码中,我们首先打开文件并计算文件的总行数。然后,使用tqdm在循环中读取文件内容,并在进度条中显示描述为"Processing File"。你可以在循环中添加你的文件处理代码。

示例3:处理数据集并显示进度条

如果你需要处理大型数据集,可以使用tqdm来显示数据处理的进度:

from tqdm import tqdm
# 模拟数据集
data = range(1000000)
# 处理数据集并显示进度条
for item in tqdm(data, desc="Processing Data"):
    # 在这里添加你的数据处理代码

在上述代码中,我们使用tqdm遍历数据集,并在进度条中显示描述为"Processing Data"。你可以在循环中添加你的数据处理代码。

3. 更多定制化选项

除了基本的使用方法外,tqdm还提供了许多定制化选项,以满足不同需求。你可以通过设置参数来自定义进度条的样式、速度、显示格式等。例如:

desc:设置进度条的描述文本。
total:设置总数,用于显示进度的百分比。
unit:设置进度条的单位。
ncols:设置进度条的宽度。
bar_format:设置进度条的样式。
disable:禁用进度条,直接输出文本。

你可以根据自己的需求,参考tqdm的官方文档(https://github.com/tqdm/tqdm)来进一步定制化进度条。

下面是几个扩展示例:

定制进度条样式

你可以使用bar_format参数来定制进度条的样式。下面是几个示例:

# 使用默认样式

for item in tqdm(data, desc="Processing", bar_format="{l_bar}{bar}| {n_fmt}/{total_fmt}"):

    # 在这里添加你的代码

# 使用自定义样式

for item in tqdm(data, desc="Processing", bar_format="{l_bar}{bar}| {n_fmt}/{total_fmt} [{elapsed}<{remaining}, {rate_fmt}{postfix}]"):
    # 在这里添加你的代码

控制进度条速度

你可以使用tqdm函数的miniters参数来控制进度条的更新速度,避免频繁的刷新。示例代码如下:

# 设置进度条的最小更新间隔为0.1秒

for item in tqdm(data, desc="Processing", miniters=1):
    # 在这里添加你的代码

自定义进度条单位

你可以使用unit参数来自定义进度条的单位。例如:

# 使用自定义单位

for item in tqdm(data, desc="Processing", unit="item"):
    # 在这里添加你的代码

禁用进度条

有时候你可能想在某些情况下禁用进度条,直接输出文本。你可以使用tqdm函数的disable参数来实现。示例代码如下:

# 禁用进度条,直接输出文

with tqdm(data, desc="Processing", disable=True) as pbar:
    for item in data:
        # 在这里添加你的代码
        pbar.update(1)

设置进度条的宽度

你可以使用ncols参数来设置进度条的宽度。示例代码如下:

# 设置进度条的宽度为50个字符
for item in tqdm(data, desc="Processing", ncols=50):
    # 在这里添加你的代码

动态更新进度条描述

有时候你可能需要动态更新进度条的描述文本,以提供更多的信息。你可以使用tqdm函数返回的迭代器对象,并调用set_description方法来实现。示例代码如下:

# 动态更新进度条的描述文本
pbar = tqdm(data, desc="Processing")
for item in pbar:
    # 在这里添加你的代码
    pbar.set_description(f"Processing item {item}")

显示剩余时间和速度信息

通过使用tqdm库,你可以方便地显示剩余时间和处理速度等信息。示例代码如下

# 显示剩余时间和速度信息
for item in tqdm(data, desc="Processing", smoothing=0.1):
    # 在这里添加你的代码

在多线程或多进程中使用tqdm

如果你在多线程或多进程环境中使用tqdm库,可能会遇到显示混乱或冲突的问题。你可以使用tqdm库的set_lock方法来解决这个问题。示例代码如下:

from tqdm import tqdm
from multiprocessing import Pool, Manager
# 使用Manager创建线程安全的列表
manager = Manager()
data = manager.list(range(10))
# 创建进程池
pool = Pool()
# 设置锁
with tqdm(total=len(data), desc="Processing") as pbar:
    pbar.set_lock(manager.Lock())
    # 在多进程中使用tqdm
    for _ in pool.imap_unordered(process_item, data):
        pbar.update(1)

设置进度条的初始值和步长

你可以使用tqdm函数的initial参数来设置进度条的初始值,使用step参数来设置每次更新的步长。示例代码如下:

# 设置进度条的初始值为10,步长为2
for item in tqdm(data, desc="Processing", initial=10, step=2):
    # 在这里添加你的代码

显示剩余时间的估计方式

tqdm库默认使用平均速度来估计剩余时间。但你可以使用bar_format参数和tqdm_format方法来选择其他的估计方式。示例代码如下:

# 使用预定义的剩余时间估计方式
for item in tqdm(data, desc="Processing", bar_format="{l_bar}{bar}| {n_fmt}/{total_fmt} {remaining}"):
    # 在这里添加你的代码
# 使用自定义的剩余时间估计方式
for item in tqdm(data, desc="Processing", bar_format="{l_bar}{bar}| {n_fmt}/{total_fmt} {elapsed} / {remaining}"):
    # 在这里添加你的代码

将进度条写入日志文件

你可以使用tqdm库的set_postfix方法将进度条的信息写入日志文件。示例代码如下:

import logging
# 创建日志记录器
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
# 创建日志处理器
file_handler = logging.FileHandler("progress.log")
logger.addHandler(file_handler)
# 将进度条信息写入日志文件
for item in tqdm(data, desc="Processing"):
    # 在这里添加你的代码
    logger.info(f"Processed item {item}")
    tqdm.set_postfix(item=item)

4. 总结

通过使用tqdm库,你可以轻松地为你的Python代码添加进度条,让你的代码动起来!不论是处理大数据集、执行耗时任务还是循环迭代过程,tqdm都能提供实时的进度反馈,帮助你更好地了解代码的执行情况。现在就尝试在你的代码中使用tqdm,提高编写和调试代码的效率吧!

后:下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值