Python · 进度条

2023-01-31 00:01:40 python 进度条

(这里是本章会用到的 GitHub 地址)

我实现的这个进度条可能是可以当做一个第三方库来使用的(这个人好自大,啧),它支持记录并发程序的进度且损耗基本只来源于 python 本身

先来看看我们的进度条长啥样:

 

它有一个名字(“Test”)、有总任务数和已完成任务数、有总耗时和单个任务平均耗时、还有一个“进度条”。所有这些在整个程序运行过程中都是在一行内输出的、也就是说它不会产生多行输出(如果屏幕够宽的话)。所有任务完成后,进度条会变为:

 

 

大体上来说功能还算完备。虽说看上去可能有点厉害,其实最核心的实现只用到了这个功能:

 

  • print("\r" + "xxx", end=""):这样的话会先把 console 里面当前的行清除掉、再输出 xxx

剩下的就都是各种封装了。我打算只说一个实现的大致思路、然后讲讲怎么去调用这个进度条

实现的大纲大概如下: 

  • 要记录任务开始时的已完成的任务数和未完成的任务数
  • 要定义一个计数器,记录着总共已完成的任务数
  • 要定义一个 start 函数和一个 update 函数作为接口
  • 要定义一个 _flush 函数来控制输出流

调用的方法:

def task():
    x = 0
    for _ in range(10 ** 6):
        x = 0
    return x

if __name__ == '__main__':
    n = 100
    bar = ProgressBar(max_value=n, name="Test")
    bar.start()
    for i in range(n):
        task()
        bar.update()

Done!运行效果就是上面那两张图

这章有点水(你居然有自知之明)、主要是想帮一下平时会用 Python 运行大程序却又暂时苦于无法得知进度的观众老爷们(虽然这部分观众老爷可能都知道怎么实现进度条……)。进度条通常来说可以用在爬虫机器学习中,我实现的神经网络里面就用到了它

相关文章