Python 进度条的神器tqdm

大家好,在编写Python脚本时,尤其是那些需要处理大量数据或者执行耗时操作的脚本,监控任务进度是非常重要的。

有没有想过在你的Python脚本中添加一个进度条,让你可以清楚地看到任务的完成进度?这时候,tqdm库就派上用场了。

什么是tqdm?

tqdm 是一个快速、可扩展的 Python 进度条库。它的名字来自阿拉伯语“taqaddum”,意思是“进步”。使用tqdm,你可以非常轻松地在 Python 脚本中添加进度条,而无需编写复杂的代码。

图片

为什么使用tqdm?

  • • 简单易用:只需在迭代对象前添加tqdm,就可以显示进度条。
  • • 功能丰富:支持自定义进度条样式、嵌套进度条、在多线程或多进程环境中使用等。
  • • 高效:对性能几乎没有影响,可以流畅运行在大多数环境中。

tqdm的安装

pip install tqdm

基本用法

让我们从最简单的用法开始:

from tqdm import tqdm
import time

# 简单的循环
for i in tqdm(range(100)):
    time.sleep(0.1)  # 模拟一些耗时操作

在上面的代码中,我们使用tqdm(range(100))替代了普通的range(100),这会在循环执行时显示一个进度条。

图片

自定义进度条

tqdm 允许我们自定义进度条的许多属性,例如描述文字、进度条格式等:

from tqdm import tqdm
import time
for i in tqdm(range(100), desc="Processing", ncols=100, ascii=True):
    time.sleep(0.1)

在这段代码中,我们添加了desc参数来设置进度条的描述,ncols参数来设置进度条的宽度,ascii参数来使用ASCII字符显示进度条。

图片

在函数中使用tqdm

你可以在任何可迭代对象前使用tqdm,例如列表、生成器等:

from tqdm import tqdm
import time
def process_items(items):
    for item in tqdm(items, desc="Processing items"):
        time.sleep(0.1)  # 模拟处理时间

items = list(range(100))
process_items(items)
图片

在Pandas中使用tqdm

如果你经常处理数据,可能会使用Pandas库。幸运的是,tqdm与Pandas也可以很好地结合:

import pandas as pd
from tqdm import tqdm

tqdm.pandas(desc="Processing DataFrame")

df = pd.DataFrame({"a": range(100)})
df["a"].progress_apply(lambda x: time.sleep(0.1))  # 模拟处理时间
图片

进阶用法

tqdm 还支持嵌套进度条、在多线程和多进程环境中使用等高级功能。

嵌套进度条

当你有多重嵌套循环时,可以使用tqdm的嵌套进度条:

from tqdm import tqdm
import time

for i in tqdm(range(3), desc="Outer Loop"):
    for j in tqdm(range(100), desc="Inner Loop", leave=False):
        time.sleep(0.01)
图片

多线程和多进程

tqdm 还可以与多线程和多进程一起使用,通过ThreadPoolProcessPool

from tqdm import tqdm
from concurrent.futures import ThreadPoolExecutor

def process_item(item):
    time.sleep(0.1)
    return item

items = list(range(100))

with ThreadPoolExecutor(max_workers=4) as executor:
    list(tqdm(executor.map(process_item, items), total=len(items)))
图片

tqdm 是一个非常有用的库,可以帮助你在执行耗时任务时轻松地监控进度。它不仅使用简单,而且功能丰富,适用于各种场景。

原创文章,作者:guozi,如若转载,请注明出处:https://www.sudun.com/ask/89490.html

Like (0)
guozi的头像guozi
Previous 2024年6月4日 下午3:43
Next 2024年6月4日 下午3:48

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注