前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python · 进度条

Python · 进度条

作者头像
py3study
发布2020-01-17 15:59:43
2.1K0
发布2020-01-17 15:59:43
举报
文章被收录于专栏:python3python3

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

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

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

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

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

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

实现的大纲大概如下: 

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

调用的方法:

代码语言:javascript
复制
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 运行大程序却又暂时苦于无法得知进度的观众老爷们(虽然这部分观众老爷可能都知道怎么实现进度条……)。进度条通常来说可以用在爬虫或机器学习中,我实现的神经网络里面就用到了它

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-05-20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档