文章目录
-
-
- 1. 普通进度条
- 2. 带时间的普通进度条
- 3. tqdm库
- 4. alive_progress库
- 5. progressbar库
-
1. 普通进度条
利用打印功能print进行实时刷新显示
import sys
import time
def progress_bar(finish_tasks_number, tasks_number):
"""
进度条
:param finish_tasks_number: int, 已完成的任务数
:param tasks_number: int, 总的任务数
:return:
"""
percentage = round(finish_tasks_number / tasks_number * 100)
print("\r进度: {}%: ".format(percentage), "▓" * (percentage // 2), end="")
sys.stdout.flush()
if __name__ == '__main__':
for i in range(0, 101):
progress_bar(i, 100)
time.sleep(0.05)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
效果如下:
2. 带时间的普通进度条
同样通过print进行打印进度条,不过还加入了time时间显示,显示进度过程中所需要的时间
import time
def progress_bar(finish_tasks_number, tasks_number, complete_time):
"""
进度条
:param finish_tasks_number: int, 已完成的任务数
:param tasks_number: int, 总的任务数
:param complete_time: float, 已完成的任务所消耗的总时间
:return:
"""
percentage = round(finish_tasks_number / tasks_number * 100)
finished_label = "▓" * (percentage // 2)
unfinished_label = "-" * (100 - percentage)
arrow = "->"
if not finished_label or not unfinished_label:
arrow = ""
print("\r{}% [{}{}{}] {:.2f}s".format(percentage, finished_label, arrow, unfinished_label, complete_time), end="")
if __name__ == '__main__':
start = time.perf_counter()
for i in range(0, 101):
duration = time.perf_counter() - start
progress_bar(i, 100, duration)
time.sleep(0.05)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
效果如下:
3. tqdm库
tqdm是一个快速,可扩展的Python进度条,可以在Python长循环中添加一个进度提示信息
import time
from tqdm import trange
for i in trange(100):
# do something
time.sleep(0.5)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
效果如下:
4. alive_progress库
alive_progress是一个动态的实时显示进度条库
import time
from alive_progress import alive_bar
# 假设需要执行100个任务
with alive_bar(100) as bar:
for item in range(100): # 遍历任务
# 假设这代码部分需要0.5s
time.sleep(0.5)
bar() # 显示进度
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
效果如下:
5. progressbar库
import time
from progressbar import ProgressBar, Percentage, Bar, Timer, ETA, FileTransferSpeed
widgets = ['Progress: ', Percentage(), ' ', Bar('#'), ' ', Timer(), ' ', ETA(), ' ', FileTransferSpeed()]
progress = ProgressBar(widgets=widgets)
for i in progress(range(100)):
# do something
time.sleep(0.05)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
效果如下: