Python实现显示进度条

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)

效果如下:

在这里插入图片描述

  • 39
    点赞
  • 134
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值