六種酷炫Python運(yùn)行進(jìn)度條
點(diǎn)擊上方Python知識(shí)圈,設(shè)為星標(biāo)
回復(fù)1024獲取Python資料
閱讀文本大概需要 3?分鐘
點(diǎn)擊「閱讀原文」查看pk哥原創(chuàng)精品視頻。
你的代碼進(jìn)度還剩多少?
今天給大家介紹下目前6種比較常用的進(jìn)度條,讓大家都能直觀地看到腳本運(yùn)行最新的進(jìn)展情況。
1.普通進(jìn)度條
2.帶時(shí)間進(jìn)度條
3.tpdm進(jìn)度條
4.progress進(jìn)度條
5.alive_progress進(jìn)度條
6.可視化進(jìn)度條
1.普通進(jìn)度條
在代碼迭代運(yùn)行中可以自己進(jìn)行統(tǒng)計(jì)計(jì)算,并使用格式化字符串輸出代碼運(yùn)行進(jìn)度。
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()
進(jìn)度條12.帶時(shí)間進(jìn)度條
導(dǎo)入time模塊來計(jì)算代碼運(yùn)行的時(shí)間,加上代碼迭代進(jìn)度使用格式化字符串來輸出代碼運(yùn)行進(jìn)度。
import?time
scale?=?50
print("執(zhí)行開始,祈禱不報(bào)錯(cuò)".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,"-"))
進(jìn)度條23.tpdm進(jìn)度條
這是一個(gè)專門生成進(jìn)度條的工具包,可以使用pip在終端進(jìn)行下載,當(dāng)然還能切換進(jìn)度條風(fēng)格。
from?time?import?sleep
from?tqdm?import?tqdm
#?這里同樣的,tqdm就是這個(gè)進(jìn)度條最常用的一個(gè)方法
#?里面存一個(gè)可迭代對(duì)象
for?i?in?tqdm(range(1,?500)):
???#?模擬你的任務(wù)
???sleep(0.01)
sleep(0.5)

相關(guān)文檔:https://tqdm.github.io/
4.progress進(jìn)度條
你只需要定義迭代的次數(shù)、進(jìn)度條類型并在每次迭代時(shí)告知進(jìn)度條即可,具體代碼案例如下
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進(jìn)度條
顧名思義,這個(gè)庫可以使得進(jìn)度條變得生動(dòng)起來,它比原來我們見過的進(jìn)度條多了一些動(dòng)畫效果,需要使用pip進(jìn)行下載,代碼案例如下:
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.可視化進(jìn)度條
用 PySimpleGUI 得到圖形化進(jìn)度條,我們可以加一行簡單的代碼,在命令行腳本中得到圖形化進(jìn)度條,也是使用pip進(jìn)行下載,代碼案例如下
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)


-----------------------公眾號(hào):Python知識(shí)圈博客:www.pyzhishiquan.com知乎:Python知識(shí)圈微信視頻號(hào):菜鳥程序員 (分享有趣的編程技巧、Python技巧)bilibili:菜鳥程序員的日常(目前原創(chuàng)視頻:18,累計(jì)播放量:70萬)
一個(gè)學(xué)習(xí)Python的人,喜歡分享,喜歡搞事情!
長按下圖二維碼關(guān)注,和你一起領(lǐng)悟Python的魅力。
Python知識(shí)圈公眾號(hào)的交流群已經(jīng)建立,群里可以領(lǐng)取 Python 和人工智能學(xué)習(xí)資料,大家可以一起學(xué)習(xí)交流,效率更高,如果是想發(fā)推文、廣告、砍價(jià)小程序的敬請(qǐng)繞道!一定記得備注「交流學(xué)習(xí)」,我會(huì)盡快通過好友申請(qǐng)哦!通過好友后私聊我「學(xué)習(xí)資料」或者「進(jìn)群」都可以。
掃碼添加,備注:交流學(xué)習(xí)
往期推薦010203
打基礎(chǔ)一定要吃透這12類 Python 內(nèi)置函數(shù)

