在某些如爬虫等程序运行时,所需要的时间往往比较多,这时候我们就迫切需要知道程序运行的进度,以此对时间有一定的把握,进度条的作用就能在这里彰显了,步骤如下:
1.导入库函数sys:
import sys
2.定义一个进度条函数:
@staticmethod
def get_progress_bar(progress):
MAX_LEN = 50
len = int(MAX_LEN * progress)
return ('Progress:[' + '=' * len +
('>' if len < MAX_LEN else '') +
' ' * (MAX_LEN - len) +
'] %.1f%%' % (progress * 100.))
MAX_LEN是进度条总长度,len展现的是当前进度,效果如下:
Progress:[> ] 0.0%
……
Progress:[==========> ] 20.0%
……
Progress:[===================================================] 100.0%
3.显示进度条:
count = 0
……
count = count + 1
sys.stderr.write('\r\033[K' + self.get_progress_bar(count / (self.C * dH * dW)))
sys.stderr.flush()
以图像处理为例:self.C * dH * dW是一共要处理的像素数据,在进程中每处理一个数据count便会加1,进度参数便会传递给进度条函数。
sys.stderr.write():错误标准输出,打印到屏幕,不会主动加上任何结尾。实际上它是一种“假错误”,我们要利用它输出此时的进度,且伴随着进度的变化前一次的输出会被新输出代替即只能打印一个str
sys.stderr.flush():显式地让缓存区的信息输出(貌似加不加效果都一样)