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)

效果如下:

在这里插入图片描述

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐