Python实现显示进度条
文章目录1. 普通进度条2.1. 普通进度条利用打印功能print进行实时刷新显示import sysimport timefor i in range(1, 101):"""任务代码"""print("\r", end="")print("进度: {}%: ".format(i), "▓" * (i // 2), end="")sys.stdout.flush()time.sleep(0.05)
·
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)
效果如下:
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)
效果如下:
3. tqdm库
tqdm是一个快速,可扩展的Python进度条,可以在Python长循环中添加一个进度提示信息
import time
from tqdm import trange
for i in trange(100):
# do something
time.sleep(0.5)
效果如下:
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() # 显示进度
效果如下:
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)
效果如下:
更多推荐
已为社区贡献2条内容
所有评论(0)