如何用 Python 给程序加个进度条?
2021-10-21 01:26:53 Author: mp.weixin.qq.com(查看原文) 阅读量:25 收藏

点击上方“CSDN”,选择“置顶公众号”

关键时刻,第一时间送达!


作者 | 猿媛牧场

责编 | 郭芮

对于开发或者运维来说,使用 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 是一个快速、扩展性强的进度条工具库,它提供了非常多的接口,有兴趣的小伙伴可以了解一下。

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。

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

所有的代码都已经 Push 到我的 GitHub 上去了,有兴趣的小伙伴可以前去Download。

  • Miracle Github:https://github.com/MiracleYoung/exercises

声明:本文为作者投稿,版权归作者所有。

  征稿啦!

CSDN 公众号秉持着「与千万技术人共成长」理念,不仅以「极客头条」、「畅言」栏目在第一时间以技术人的独特视角描述技术人关心的行业焦点事件,更有「技术头条」专栏,深度解读行业内的热门技术与场景应用,让所有的开发者紧跟技术潮流,保持警醒的技术嗅觉,对行业趋势、技术有更为全面的认知。
如果你有优质的文章,或是行业热点事件、技术趋势的真知灼见,或是深度的应用实践、场景方案等的新见解,欢迎联系 CSDN 投稿,联系方式:微信(guorui_1118,请备注投稿+姓名+公司职位),邮箱([email protected])。


文章来源: http://mp.weixin.qq.com/s?__biz=MjM5MjAwODM4MA==&mid=2650698926&idx=2&sn=99dcd8217a3651871559b3983b668be6&chksm=bea6057d89d18c6bd7a44b099da6e7a613943b26ae0e919e3935cfa92a76bd4246c5ed83ef95&mpshare=1&scene=24&srcid=06099xosDjsX41KupledMMMM#rd
如有侵权请联系:admin#unsafe.sh