我們在寫一些python程式時,如果程式執行時間較長,我們希望能夠有乙個進度條來動態的展示程式執行進度。
首先能想到的做法是用print將執行到第幾步列印出來,但這樣顯然不是我們想要的進度條,顯示進度占用了很多行,原因是print在末尾預設加上了」\n」換行符。詳見《你應該知道的print》。
import time
n = 1000
for i in range(n):
print("進度:%".format(round((i + 1) * 100 / n)), end="\r")
time.sleep(0.01)
輸出格式:
100%
進度顯示的問題解決了,有時候我們需要有一些時間方面的顯示;例如已經耗費了多長時間,預計還剩下多少時間等。
import time
n = 1000
st = time.clock()
for i in range(n):
p = round((i + 1) * 100 / n)
duration = round(time.clock() - st, 2)
remaining = round(duration * 100 / (0.01 + p) - duration, 2)
time.sleep(0.01)
上面**中計算remaining時p加上了0.01,是為了避免除0問題。
至此,控制台進度條可以工作了,但**在不同地方使用時會比較冗餘,理解了原理,可以封裝成乙個庫。
import time
import progressbar
p = progressbar.progressbar()
n = 1000
for i in p(range(n)):
time.sleep(0.01)
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()
兩種簡單用法的輸出格式都是:
100% (1000 of 1000) |#####################| elapsed time: 0:00:10 time: 0:00:10
包含了百分百進度,數量進度,#號前進條,耗費時間,剩餘時間。
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', # 計時器
'eta', # 預計剩餘時間
'absoluteeta', # 預計結束的絕對時間,耗時很長時使用較方便
'percentage', # 百分比進度,30%
'******progress', # 計數進度,300/1000
'counter', # 單純計數
'bar' # 「#」號進度條
例如:
import time
import progressbar
bar = progressbar.progressbar(widgets=[
progressbar.percentage(),
' (', progressbar.******progress(), ') ',
' (', 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)
golang控制台顯示進度條
x 總量 x 當前進度 x 耗時 通過以上元素可以延伸出 完成百分比 速度 預計剩餘時間 根據設定速度快慢閾值用不同的顏色來顯示進度條。進度條 type bar struct 耗時 乙個計時器,需要注意的是即使進度沒有變化,耗時也是遞增的,看過乙個多程序進度條的寫法,沒有注意這塊,乙個gorouti...
實現控制台進度條
此類功能在linux的控制台軟體中是很常見的,windows下沒有什麼印象。因為wget是c語言在linux上實現的,我首先考慮到的是不是有相關介面,於是就找來那本名著 uinx環境程式設計 查閱後並未發現相關api。有同事認為stdout也是檔案,應該看看檔案io章。於是就仔細學習了那章,複習和鞏...
Python 控制台進度條的實現
進行爬蟲等耗時的任務時,有時會想在控制台輸出進度條,以顯示當前任務進度。這裡總結了兩種方法。方法1 使用tqdm模組 示例 from time import sleep from tqdm import tqdm for i in tqdm range 1000 sleep 0.005 顯示效果 方...