专栏首页Python专栏用Python给程序加个进度条

用Python给程序加个进度条

对于开发或者运维来说,使用python去完成一些跑批任务,或者做一些监控事件是非常正常的情况。那么如何有效的监控任务的进度,除了在任务中加上log外,还能不能有另一种方式来了解任务进展到哪一步了呢?

这就是今天我们来了解的内容,进度条

标准输出

首先说一下在操作系统中,都有哪些控制符:

  • \r: 将光标移动到当前行的首位而不换行;
  • \n:将光标移动到下一行,并不移动到首位;
  • \r\n:将光标移动到下一行首位。

那让我们来看下如何通过python来将标准输出中添加进度条吧

import sys
import time

def progress_bar(total):
    """
    进度条效果
    """
    # 获取标准输出
    _output = sys.stdout
    # 通过参数决定你的进度条总量是多少
    for count in range(0, total + 1):
        # 这里的second只是作为工作量的一种代替
        # 这里应该是有你的主程序,main()
        _second = 0.1
        # 模拟业务的消耗时间
        time.sleep(_second)
        # 输出进度条
        _output.write(f'\rcomplete percent:{count:.0f}')
    # 将标准输出一次性刷新
    _output.flush()

progress_bar(100)

来看下实际效果,这里我录了一段gif

tqdm模块

tqdm是一个快速、扩展性强的进度条工具库,它提供了非常多的接口,有兴趣的小伙伴可以了解一下。githup地址是: https://github.com/tqdm/tqdm

我们来看下,如何使用tqdm模块来实现进度条

1. 首先是安装,非常简单

pip install tqdm

2. 接下来就是操作啦

from time import sleep
from tqdm import tqdm

# 这里同样的,tqdm就是这个进度条最常用的一个方法
# 里面存一个可迭代对象
for i in tqdm(range(1, 500)):
    # 模拟你的任务
    sleep(0.01)

是不是看到这里发现,tqdm非常的简单呢?这只是一个例子啦,他也可以非常的复杂,同时你也支持多线程、多进程,还有pandas哦~来一个多进程的感受下吧~

所有的代码都已经push到我的github上去啦,有兴趣的小伙伴可以前去download~Miracle Github:https://github.com/MiracleYoung/exercises

如果你对今天的内容还感兴趣的话,何不点个赞再走呢?如果感兴趣到想赞赏我,就不要犹豫啦~


本文分享自微信公众号 - 猿媛牧场(xpchuiit)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-06-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 自制微信机器人:群发消息、自动接收好友

    这些使用客户端工具都无法解决,因为客户端工具的一个特点就是native,需要你直接操作电脑,不方便。

    用户1634449
  • Python | 一次下完所有小说,还有谁!

    来源:http://www.cnblogs.com/Josiah-Lin/p/7241678.html

    用户1634449
  • 有时间BB,不如想想怎么让别人闭嘴吧

    经过上次「SKR!虎扑66万JRS大战3300万吴亦凡护卫队,别逼我拿Python」一事,我发现观众里有很多JRs,「这就是灌篮」一定不陌生。

    用户1634449
  • Python 程序执行时如何显示进度条?

    先来说下 tqdm 的使用场景,工作中有时候会遇到这样的问题,想要将某个任务执行很多次,显而易见,可以使用 for 循环来控制它重复执行很多次。

    abs_zero
  • python的Tqdm模块

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    于小勇
  • (数据科学学习手札53)Python中tqdm模块的用法

      tqdm是Python中专门用于进度条美化的模块,通过在非while的循环体内嵌入tqdm,可以得到一个能更好展现程序运行过程的提示进度条,本文就将针对tq...

    Feffery
  • JavaScript 测试教程–part 3:测试 props,挂载函数和快照测试[每日前端夜话0xE9]

    在上一篇教程中,我介绍了使用 Enzyme 测试 React 组件的基础知识。今天,将进行更深入的研究,并学习如何测试 props,如何(以及为什么)使用 mo...

    疯狂的技术宅
  • 每天一道面试题——登录

    我常说一句话;测试人员最重要的财富就是他受过训练的大脑。而其中最重要的,就是他是否具备成熟的测试思维。

    张树臣
  • 《Effective Objective-C》干货三部曲(一):概念篇

    本书是iOS程序员入门的必读书籍,它讲述了在iOS开发中(Objective-C语言)可以遵循的规范和一些开发技巧。

    用户2932962
  • 变脸前奏:掌握可变编解码器

    现代人工智能技术能神乎其神的将一个人的脸严丝合缝的移植到另一个人的照片或视频里,类似于ZAO这类风靡一时的应用就能让用户将指定头像切换到一段视频中的对应角色里,...

    望月从良

扫码关注云+社区

领取腾讯云代金券