进度条是指在代码运行过程中,通过不断更新的方式向用户显示运行进度的工具。对于数据科学和深度学习任务,运行时间可能会相当长,使用进度条工具可以提高代码的可读性、方便测试和调试,同时也是一种美化输出的方式。
Python中有很多库可以方便地创建进度条,本文将介绍两个常用的库——progress和tqdm,为您讲解如何使用它们,以及基本的功能、进阶的功能和示例代码。
1.安装
在开始使用进度条工具前,您需要确保已经安装了进度条库。您可以在终端中使用pip安装库,如下所示:pip install progresspip 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支持自定义进度条的外观。下面是一个简单的例子: 这个代码创建了一个进度条,它具有自定义格式,其中bar_format参数控制外观。 ### 暂停并重新开始 有时,您需要暂停进度条,让用户执行一些操作,然后继续前进。这个代码展示了实现这一点的方法: 请注意,在这个例子中,我们使用了tqdm.write()函数来显示暂停消息,并使用input()函数等待用户按下Enter键。 ### 在多线程中使用 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)from tqdm import tqdmimport timefor i in tqdm(range(20)): time.sleep(0.5) if i == 10: tqdm.write('暂停中,请按Enter键以继续。') input()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是两个简单易用的库,它们可以轻松地创建漂亮的进度条,提高代码的可读性,并方便测试和调试。希望这篇文章可以帮助您更好地了解进度条的使用,并在编程中方便快捷地应用起来。 以下是本文完整代码: 这是一个完整的Python代码示例。在第一部分中,代码演示了如何使用progress库和tqdm库创建和更新进度条。在第二部分中,代码演示了如何使用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()
微信扫一扫
关注该公众号