进度条是指在代码运行过程中,通过不断更新的方式向用户显示运行进度的工具。对于数据科学和深度学习任务,运行时间可能会相当长,使用进度条工具可以提高代码的可读性、方便测试和调试,同时也是一种美化输出的方式。
Python中有很多库可以方便地创建进度条,本文将介绍两个常用的库——progress和tqdm,为您讲解如何使用它们,以及基本的功能、进阶的功能和示例代码。
1.安装
在开始使用进度条工具前,您需要确保已经安装了进度条库。您可以在终端中使用pip安装库,如下所示:pip install progress
pip install tqdm
然后,您可以在Python代码中导入它们:from progress.bar import Bar
from tqdm import tqdm
2.基础部分
### progress库
progress库提供了一个简单的进度条,可以轻松了解循环执行的进度。下面是一个简单的例子:from progress.bar import Bar
import time
bar = 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 tqdm
import time
for i in tqdm(range(20)):
time.sleep(0.5)
这个代码快速创建了一个进度条,循环20次,并且根据每次的明确度绘制进度条。
3.进阶部分 ### 更改进度条样式 tqdm支持自定义进度条的外观。下面是一个简单的例子: 这个代码创建了一个进度条,它具有自定义格式,其中bar_format参数控制外观。 ### 暂停并重新开始 有时,您需要暂停进度条,让用户执行一些操作,然后继续前进。这个代码展示了实现这一点的方法: 请注意,在这个例子中,我们使用了tqdm.write()函数来显示暂停消息,并使用input()函数等待用户按下Enter键。 ### 在多线程中使用 tqdm库支持多线程,因此您可以同时显示多个进度条。这个代码展示了实现这一点的方法: 这个代码创建了五个线程,每个线程都有一个进度条。由于进度条是在单独的线程中生成的,因此可以轻松地在主线程中执行其他操作。from tqdm import tqdm
import time
for i in tqdm(range(20), bar_format='{l_bar}{bar:20}{r_bar}{bar:-10b}'):
time.sleep(0.5)
from tqdm import tqdm
import time
for i in tqdm(range(20)):
time.sleep(0.5)
if i == 10:
tqdm.write('暂停中,请按Enter键以继续。')
input()
from tqdm import tqdm
import threading
import time
def 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 libraries
from progress.bar import Bar
from tqdm import tqdm
import threading
import time
# Creating a progress bar using the progress library
bar = Bar('Processing', max=20)
# Looping through the range and updating the progress
for i in range(20):
time.sleep(0.5)
bar.next()
# Finishing the progress bar
bar.finish()
# Creating a progress bar using the tqdm library
for i in tqdm(range(20)):
time.sleep(0.5)
# Customizing the progress bar using the format parameter
for i in tqdm(range(20), bar_format='{l_bar}{bar:20}{r_bar}{bar:-10b}'):
time.sleep(0.5)
# Pausing and resuming the progress bar
for 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 environment
def 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()
微信扫一扫
关注该公众号