64

用Python给程序加个进度条

 5 years ago
source link: http://www.10tiao.com/html/320/201806/2651004821/1.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.


点击上方“程序人生”,选择“置顶公众号”

第一时间关注程序猿(媛)身边的故事


图片源自网络

作者

猿媛牧场

如需转载,请联系原作者授权。


对于开发或者运维来说,使用 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

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


- The End -

「若你有原创文章想与大家分享,欢迎投稿。」

加编辑微信ID,备注#投稿#:

程序 丨 druidlost  

小七 丨 duoshangshuang


更多精彩内容


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK