Python显示程序进度---progressbar2用法详解(针对零编程基础)

官方文本介绍

网上查询progressbar的使用方法都是同一个套路,给出了官网上的代码示例,但是对于我这种基础薄弱的learner实在没看懂在具体的程序中到底怎么用,于是详细阅读官网介绍,汇总出此篇文章。

  • progressbar是一个用文本来显示程序运行进度的Python库。具体的显示格式通过各类widget(小部件)来控制。

  • pycharm中使用需要注意, sys.stdout or sys.stderr只能同时使用一个,否则会中断。

  • 常用场景为:显示下载进度、显示任务的执行进度

  • 类似功能的库:tqdm

  • 进度条的显示可以通过\n,\r来实现

  • 进度条与一般的print区别在哪里

print输出一个\n(换行符),因此输出结束后游标就移动到了下一行行首,然后继续后续程序。

进度条必须在原地输出,不能换行。怎么实现呢?输出(sys.stdout.write()实现)完毕后将游标移动到行首,继续输出;新的更长的进度条把短的覆盖掉,就形成了动画效果。

转义符r可以把游标移动到行首而不换行;转义符n把游标移动到行首并且换行。

Python中输出stdout(标准输出)可以使用sys.stdout.write(具体理解可见链接)

  • 通过sys.stdout.write()实现进度条

# 示例
import time,sys
for i in range(100):
    percent = i / 100
    sys.stdout.write("\r{0}{1}".format("|"*i , '%.2f%%' % (percent * 100)))
    sys.stdout.flush()
    time.sleep(1)
  • progressbar到底怎么用-简单用法

有了前面的基础,现在就搞明白怎么用progressbar这个lib了。

官网给了示范例子:

import time
import progressbar
p = progressbar.ProgressBar()
N = 1000
for i in p(range(N)):
    time.sleep(0.01)

应用于for循环,

# 正常for循环
for i in range(N):
# 加上进度,就是将range(N)放到ProgressBar()中
for i in ProgressBar(range(N)):
  • progressbar高级点的用法(自己配置输出格式)

import time
import progressbar
bar = progressbar.ProgressBar(widgets=[ ' [', progressbar.Timer(), '] ,progressbar.Percentage(),' (', progressbar.ETA(), ') ',])
for i in bar(range(1000)):
    time.sleep(0.01)

就是在progressbar.ProgressBar()中增加一些参数。

  • progressbar中常用的widgets

‘Timer’, # 计时器
‘ETA’, # 预计剩余时间
‘AbsoluteETA’, # 预计结束的绝对时间,耗时很长时使用较方便
‘Percentage’, # 百分比进度,30%
‘SimpleProgress’, # 计数进度,300/1000
‘Counter’, # 单纯计数
‘Bar’ # “#”号进度条

  • 实用案例

回测策略,遍历参数较多时,不知道需要运行多久,通过添加进度条更好的把控。

1550583034463

  • 参考

    1. 詳解Python中如何寫控制檯進度條的整理
    2. roohom
    3. 易诺千金

.
.
.
2019-02-19 21:31:47写于泰安市肥城市高新区

你可能感兴趣的:(小白学Python)