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

Python中使用tqdm库实现多线程进度条功能

发布时间:2023-12-19 05:58:05

Tqdm是一个Python库,可以为循环或迭代过程添加一个进度条,用于实时显示循环的进度。它支持在单线程或多线程中都能正确显示进度,并且非常容易使用。

首先,我们需要确保已经安装了tqdm库。可以使用以下命令来安装它:

pip install tqdm

接下来,我们来看一个简单的使用例子,通过创建多个线程来执行任务,并使用tqdm显示每个线程的进度条。

import time
from tqdm import tqdm
from threading import Thread

# 定义一个执行任务的函数
def task(name):
    for i in tqdm(range(10), desc=name, leave=False):
        time.sleep(0.1)

# 创建线程列表
threads = []
for i in range(5):
    # 创建线程,并将任务函数作为参数传递给线程
    thread = Thread(target=task, args=(f'Thread {i}', ))
    threads.append(thread)

# 启动所有线程
for thread in threads:
    thread.start()

# 等待所有线程执行完成
for thread in threads:
    thread.join()

在这个例子中,我们定义了一个task函数来执行任务。在任务函数内部,我们使用tqdm构造函数创建了一个进度条对象,并将其绑定到一个循环中。进度条的描述(desc)参数设为线程的名称,这样可以在进度条中显示线程的名称。

然后,我们创建了一组线程,并将任务函数作为参数传递给线程。通过循环来启动所有线程,并用thread.join()等待所有线程执行完成。

当我们运行这段代码时,会看到控制台输出了5个线程的进度条,每个线程都会独立显示自己的进度。

在多线程中使用tqdm时,需要注意设置leave参数,将其设为False,以确保进度条正确显示。否则,进度条可能会因为线程的退出而过早结束。

除了在多线程中使用,tqdm还支持在单线程中显示进度条。可以将循环中的tqdm(range(10), desc=name)替换为tqdm(range(10), desc=name)

tqdm还有很多其他的功能和用法,可以查看其官方文档以获得更多信息。希望上述内容对你有所帮助!