六種酷炫Python運行進度條
作者 |?行哥
來源 |?一行數(shù)據(jù)
之前行哥給大家推薦過一個windows神器,里面有個小功能是人生進度條,可以看到2020年的進度只剩下一半,那么你的代碼進度還剩多少呢?
這不,行哥本文介紹了目前6種比較常用的進度條,讓大家都能直觀地看到腳本運行最新的進展情況
1.普通進度條
2.帶時間進度條
3.tpdm進度條
4.progress進度條
5.alive_progress進度條
6.可視化進度條
1.普通進度條
在代碼迭代運行中可以自己進行統(tǒng)計計算,并使用格式化字符串輸出代碼運行進度
import?sys
import?time
def?progress_bar():
????for?i?in?range(1,?101):
????????print("\r",?end="")
????????print("Download?progress:?{}%:?".format(i),?"▋"?*?(i?//?2),?end="")
????????sys.stdout.flush()
????????time.sleep(0.05)
progress_bar()

2.帶時間進度條
導(dǎo)入time模塊來計算代碼運行的時間,加上代碼迭代進度使用格式化字符串來輸出代碼運行進度
import?time
scale?=?50
print("執(zhí)行開始,祈禱不報錯".center(scale?//?2,"-"))
start?=?time.perf_counter()
for?i?in?range(scale?+?1):
????a?=?"*"?*?i
????b?=?"."?*?(scale?-?i)
????c?=?(i?/?scale)?*?100
????dur?=?time.perf_counter()?-?start
????print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c,a,b,dur),end?=?"")
????time.sleep(0.1)
print("\n"+"執(zhí)行結(jié)束,萬幸".center(scale?//?2,"-"))

3.tpdm進度條
這是一個專門生成進度條的工具包,可以使用pip在終端進行下載,當然還能切換進度條風(fēng)格
from?time?import?sleep
from?tqdm?import?tqdm
#?這里同樣的,tqdm就是這個進度條最常用的一個方法
#?里面存一個可迭代對象
for?i?in?tqdm(range(1,?500)):
???#?模擬你的任務(wù)
???sleep(0.01)
sleep(0.5)
相關(guān)文檔:https://tqdm.github.io/
4.progress進度條
你只需要定義迭代的次數(shù)、進度條類型并在每次迭代時告知進度條即可,具體代碼案例如下
import?time
from?progress.bar?import?IncrementalBar
mylist?=?[1,2,3,4,5,6,7,8]
bar?=?IncrementalBar('Countdown',?max?=?len(mylist))
for?item?in?mylist:
????bar.next()
????time.sleep(1)
????bar.finish()
相關(guān)文檔:https://pypi.org/project/progress/1.5/
5.alive_progress進度條
顧名思義,這個庫可以使得進度條變得生動起來,它比原來我們見過的進度條多了一些動畫效果,需要使用pip進行下載,代碼案例如下:
from?alive_progress?import?alive_bar
items?=?range(100)??????????????????#?retrieve?your?set?of?items
with?alive_bar(len(items))?as?bar:???#?declare?your?expected?total
????for?item?in?items:???????????????#?iterate?as?usual
????????#?process?each?item
????????bar()
????????time.sleep(0.1)
相關(guān)文檔:https://github.com/rsalmei/alive-progress
6.可視化進度條
用 PySimpleGUI 得到圖形化進度條,我們可以加一行簡單的代碼,在命令行腳本中得到圖形化進度條,也是使用pip進行下載,代碼案例如下
import?PySimpleGUI?as?sg
import?time
mylist?=?[1,2,3,4,5,6,7,8]
for?i,?item?in?enumerate(mylist):
????sg.one_line_progress_meter('This?is?my?progress?meter!',?i+1,?len(mylist),?'-key-')
????time.sleep(1)

評論
圖片
表情
