欢迎访问宙启技术站
智能推送

如何使用tqdm()优雅地实现进度条显示和监控

发布时间:2023-12-28 12:17:42

tqdm是Python中一个非常有用的工具,可以实现在循环中显示进度条,给用户提供反馈以及监控程序的运行状况。下面我们将介绍如何使用tqdm来优雅地实现进度条显示和监控,以及给出一些使用tqdm的例子。

1. 安装tqdm

首先,我们需要先安装tqdm库。在命令行中运行以下命令即可安装:

pip install tqdm

2. 基本用法

使用tqdm最简单的方法就是将可迭代对象传递给tqdm函数,并在其后面添加for循环。tqdm会自动计算迭代对象的长度,并根据当前的进度显示一个进度条。

下面是一个使用tqdm的基本示例:

from time import sleep
from tqdm import tqdm

# 创建一个range对象,用于模拟耗时操作
nums = range(10)

# 使用tqdm来显示进度条
for num in tqdm(nums):
    sleep(0.1)

在上面的例子中,我们使用range函数创建了一个长度为10的可迭代对象nums,然后通过for循环逐个遍历这些对象。在for循环中,我们使用tqdm来显示进度条。每次循环,tqdm会更新并显示当前进度。

3. 设置进度条样式

tqdm提供了很多可供选择的进度条样式,可以根据需要进行设置。我们可以通过设置tqdm函数的参数bar_format来改变进度条的样式。

下面是一个使用自定义样式的例子:

from time import sleep
from tqdm import tqdm

# 创建一个range对象,用于模拟耗时操作
nums = range(10)

# 使用tqdm来显示进度条,并设置样式
for num in tqdm(nums, bar_format='{l_bar}{bar}|{n_fmt}/{total_fmt}'):
    sleep(0.1)

在上面的例子中,我们通过设置参数bar_format='{l_bar}{bar}|{n_fmt}/{total_fmt}'将进度条样式修改为"进度条|当前进度/总进度"。其中,{l_bar}表示进度条前面的文本信息,{bar}表示进度条本身,{n_fmt}表示当前进度,{total_fmt}表示总进度。

4. 进度条附加信息

除了显示进度条外,我们还可以使用tqdm来显示其他有用的信息,比如剩余时间、速度等。可以通过设置参数descunit来添加附加信息。

下面是一个显示剩余时间和速度的例子:

from time import sleep
from tqdm import tqdm

# 创建一个range对象,用于模拟耗时操作
nums = range(10)

# 使用tqdm来显示进度条,并添加剩余时间和速度信息
for num in tqdm(nums, desc='Processing', unit='num', ncols=80):
    sleep(0.1)

在上面的例子中,我们通过设置参数desc='Processing'unit='num'来添加描述信息和进度条的单位。此外,我们还设置了参数ncols=80来控制进度条的宽度。

5. 监控程序运行

除了显示进度条,tqdm还可以用来监控程序的运行状态,比如程序的速度、内存使用等。我们可以使用tqdm提供的一些方法来获取这些信息。

下面是一个使用tqdm来监控程序运行状态的例子:

import time
from tqdm import tqdm

# 使用tqdm来监控程序运行状态
with tqdm(total=100) as pbar:
    for i in range(10):
        time.sleep(0.1)
        pbar.update(10)

在上面的例子中,我们使用了一个with语句来创建了一个tqdm对象,通过设置total=100来指定总步数。然后,通过循环模拟任务的执行,使用pbar.update(10)来更新进度条的进度。

另外,我们还可以使用tqdm提供的其他方法来获取程序的运行状态,比如:

- tqdm.write(message):用于打印信息到控制台;

- tqdm.set_postfix(key1=value1, key2=value2):用于设置进度条后面的动态信息;

- tqdm.set_description(message):用于设置进度条前面的描述信息。

在以上示例中,我们只是简单地介绍了如何使用tqdm来实现进度条显示和监控程序运行状态。实际上,tqdm还有很多其他功能和特性可以用来优化程序的显示和监控。如果想要了解更多关于tqdm的使用和配置,请参考官方文档。