python实现进度条

华安9527 测试开发学习交流 2023-05-29 07:01 发表于浙江
图片

进度条是指在代码运行过程中,通过不断更新的方式向用户显示运行进度的工具。对于数据科学和深度学习任务,运行时间可能会相当长,使用进度条工具可以提高代码的可读性、方便测试和调试,同时也是一种美化输出的方式。

图片

Python中有很多库可以方便地创建进度条,本文将介绍两个常用的库——progress和tqdm,为您讲解如何使用它们,以及基本的功能、进阶的功能和示例代码。

图片

1.安装

图片

在开始使用进度条工具前,您需要确保已经安装了进度条库。您可以在终端中使用pip安装库,如下所示:

pip install progress
pip install tqdm

然后,您可以在Python代码中导入它们:

from progress.bar import Barfrom tqdm import tqdm
图片

2.基础部分

图片

### progress库

progress库提供了一个简单的进度条,可以轻松了解循环执行的进度。下面是一个简单的例子:

from progress.bar import Barimport timebar = Bar('Processing', max=20)for i in range(20):    time.sleep(0.5)    bar.next()bar.finish()

这个代码展示了创建一个名称为Processing,长度为20的进度条。在主循环中,每个迭代都通过bar.next()向前推进该进度条。由于每次循环需要0.5秒的时间,因此它需要10秒才能完成。

### tqdm库

tqdm库是一个更加常用的库,因为它提供了更多的选项,并且可以轻松地用于各种数据类型。下面是一个简单的例子:

from tqdm import tqdmimport timefor i in tqdm(range(20)):    time.sleep(0.5)

这个代码快速创建了一个进度条,循环20次,并且根据每次的明确度绘制进度条。‍

图片

3.进阶部分

图片

### 更改进度条样式

tqdm支持自定义进度条的外观。下面是一个简单的例子:

from tqdm import tqdmimport timefor i in tqdm(range(20), bar_format='{l_bar}{bar:20}{r_bar}{bar:-10b}'):    time.sleep(0.5)

这个代码创建了一个进度条,它具有自定义格式,其中bar_format参数控制外观。

### 暂停并重新开始

有时,您需要暂停进度条,让用户执行一些操作,然后继续前进。这个代码展示了实现这一点的方法:

from tqdm import tqdmimport timefor i in tqdm(range(20)):    time.sleep(0.5)    if i == 10:        tqdm.write('暂停中,请按Enter键以继续。')        input()

请注意,在这个例子中,我们使用了tqdm.write()函数来显示暂停消息,并使用input()函数等待用户按下Enter键。

### 在多线程中使用

tqdm库支持多线程,因此您可以同时显示多个进度条。这个代码展示了实现这一点的方法:

from tqdm import tqdmimport threadingimport timedef worker():    for i in tqdm(range(20)):        time.sleep(0.1)threads = []for i in range(5):    t = threading.Thread(target=worker)    threads.append(t)    t.start()for t in threads:    t.join()

这个代码创建了五个线程,每个线程都有一个进度条。由于进度条是在单独的线程中生成的,因此可以轻松地在主线程中执行其他操作。‍

图片

4.结论

图片

在Python编程中,进度条是一个重要的工具,可以向用户显示各种任务的执行进度。progress和tqdm是两个简单易用的库,它们可以轻松地创建漂亮的进度条,提高代码的可读性,并方便测试和调试。希望这篇文章可以帮助您更好地了解进度条的使用,并在编程中方便快捷地应用起来。

以下是本文完整代码:

# Importing the required librariesfrom progress.bar import Barfrom tqdm import tqdmimport threadingimport time# Creating a progress bar using the progress librarybar = Bar('Processing', max=20)# Looping through the range and updating the progressfor i in range(20):    time.sleep(0.5)    bar.next()# Finishing the progress barbar.finish()# Creating a progress bar using the tqdm libraryfor i in tqdm(range(20)):    time.sleep(0.5)# Customizing the progress bar using the format parameterfor i in tqdm(range(20), bar_format='{l_bar}{bar:20}{r_bar}{bar:-10b}'):    time.sleep(0.5)# Pausing and resuming the progress barfor i in tqdm(range(20)):    time.sleep(0.5)    if i == 10:        tqdm.write('Paused, press enter to continue.')        input()# Using multiple progress bars in a multithreaded environmentdef worker():    for i in tqdm(range(20)):        time.sleep(0.1)threads = []for i in range(5):    t = threading.Thread(target=worker)    threads.append(t)    t.start()for t in threads:    t.join()
图片

这是一个完整的Python代码示例。在第一部分中,代码演示了如何使用progress库和tqdm库创建和更新进度条。在第二部分中,代码演示了如何使用tqdm库自定义进度条的样式,并如何在代码执行期间暂停和恢复进度条,并在多线程环境中使用多个进度条。 欢迎关注⬇️公众号、点赞、转发!

​         

微信扫一扫
关注该公众号