我們?cè)趯懸恍﹑ython程序時(shí)蛹稍,如果程序運(yùn)行時(shí)間較長(zhǎng)铺纽,我們希望能夠有一個(gè)進(jìn)度條來動(dòng)態(tài)的展示程序運(yùn)行進(jìn)度卿城。首先枚钓,能想到的做法是用print將執(zhí)行到第幾步打印出來,但這樣顯然不是我們想要的進(jìn)度條瑟押,顯示進(jìn)度占用了很多行搀捷,原因是print在末尾默認(rèn)加上了”\n”換行符。
我們對(duì)進(jìn)度條的需求:一是進(jìn)度信息在一行中顯示多望;二是每次都能夠動(dòng)態(tài)擦除一行中上一次的內(nèi)容嫩舟。
這里推薦progressbar,下載地址為https://pypi.python.org/pypi/progressbar2
簡(jiǎn)單用法1
import time
import progressbar
p = progressbar.ProgressBar()
N = 1000
for i in p(range(N)):
time.sleep(0.01)
簡(jiǎn)單用法2
import time
import progressbar
p = progressbar.ProgressBar()
N = 1000
p.start(N)
for i in range(N):
time.sleep(0.01)
p.update(i+1)
p.finish()
兩種簡(jiǎn)單用法的輸出格式都是:
100% (1000 of 1000) |#####################| Elapsed Time: 0:00:10 Time: 0:00:10
包含了百分百進(jìn)度怀偷,數(shù)量進(jìn)度家厌,#號(hào)前進(jìn)條,耗費(fèi)時(shí)間椎工,剩余時(shí)間饭于。
高級(jí)點(diǎn)的用法(自己配置輸出格式)
import time
import progressbar
bar = progressbar.ProgressBar(widgets=[ ' [', progressbar.Timer(),
'] ',progressbar.Percentage(),' (', progressbar.ETA(), ') ',])
for i in bar(range(1000)):
time.sleep(0.01)
輸出格式:
[Elapsed Time: 0:00:10] 100% (Time: 0:00:10)
主要方式有如下幾種,可自由搭配:
'Timer', # 計(jì)時(shí)器
'ETA', # 預(yù)計(jì)剩余時(shí)間
'AbsoluteETA', # 預(yù)計(jì)結(jié)束的絕對(duì)時(shí)間维蒙,耗時(shí)很長(zhǎng)時(shí)使用較方便
'Percentage', # 百分比進(jìn)度掰吕,30%
'SimpleProgress', # 計(jì)數(shù)進(jìn)度,300/1000
'Counter', # 單純計(jì)數(shù)
'Bar' # “#”號(hào)進(jìn)度條
import time
import progressbar
bar = progressbar.ProgressBar(widgets=[
progressbar.Percentage(),
' (', progressbar.SimpleProgress(), ') ',
' (', progressbar.AbsoluteETA(), ') ',])
for i in bar(range(1000)):
time.sleep(0.01)
輸出示例:
54% ( 545 of 1000) (Estimated finish time: 2016-11-06 19:26:15)