你是否曾经遇到过处理大数据集、执行耗时任务或者循环迭代过程中不知道进展如何的情况?在这种情况下,一个简单而有效的解决方案是使用Python中的tqdm库,它可以帮助你轻松地添加进度条到你的代码中,让你的代码动起来!
tqdm(读作"taqadum",意为"进展")是一个快速、可扩展的Python进度条库,它可以在循环迭代、文件读写、数据处理等任务中显示实时的进度条。使用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)
通过使用tqdm库,你可以轻松地为你的Python代码添加进度条,让你的代码动起来!不论是处理大数据集、执行耗时任务还是循环迭代过程,tqdm都能提供实时的进度反馈,帮助你更好地了解代码的执行情况。现在就尝试在你的代码中使用tqdm,提高编写和调试代码的效率吧!
最后:下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。