zoukankan      html  css  js  c++  java
  • 【Python】给程序加个进度条

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

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

    标准输出

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

    • : 将光标移动到当前行的首位而不换行;

    • :将光标移动到下一行,并不移动到首位;

    • :将光标移动到下一行首位。

    那让我们来看下如何通过 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'
    complete percent:{count:.0f}')
       # 将标准输出一次性刷新
       _output.flush()
    progress_bar(100)

    来看下实际效果:

    Tqdm 模块

    Tqdm 是一个快速、扩展性强的进度条工具库,它提供了非常多的接口,有兴趣的小伙伴可以了解一下。

    GitHub 地址是: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。

    来一个多进程的感受下吧。

  • 相关阅读:
    CDM中添加Hive服务时Gateway是什么?
    ClouderaManager中Event Server报No such file or directory
    tail -f 与 tail -F的区别
    Zookeeper Canary
    Spark中hashshuffle与sortshuffle
    Spark streaming的执行流程
    Spark streaming的正确使用。。
    spark优化之并行度
    github 使用
    css 通用兄弟选择器( ~ )
  • 原文地址:https://www.cnblogs.com/richerdyoung/p/9219748.html
Copyright © 2011-2022 走看看