新聞中心
在大多數(shù)時(shí)候,我們的程序會(huì)一直進(jìn)行循環(huán)處理。這時(shí)候,我們非常希望能夠知道程序的處理進(jìn)度,由此來(lái)決定接下來(lái)該做些什么,本篇文章為大家分享一下Python中長(zhǎng)常用的代碼進(jìn)度條。

Progress
第一個(gè)要介紹的 Python 庫(kù)是 Progress。
你只需要定義迭代的次數(shù)、進(jìn)度條類(lèi)型并在每次迭代時(shí)告知進(jìn)度條。
import timefrom progress.bar
import IncrementalBarmylist = [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()
Progress 實(shí)現(xiàn)的進(jìn)度條效果如下:
如果你不喜歡該進(jìn)度條的格式,還可以從以下格式中挑選:
相關(guān)文檔:https://pypi.org/project/progress/1.5/
tqdm
下面我們看一下 tqdm 庫(kù)。
和之前見(jiàn)過(guò)的庫(kù)差不多,這兩行代碼也非常相似,在設(shè)置方面有一點(diǎn)點(diǎn)不同:
import timefrom tqdm
import tqdmmylist = [1,2,3,4,5,6,7,8]
for i in tqdm(mylist):
time.sleep(1)
tqdm 實(shí)現(xiàn)的進(jìn)度條效果如下:
這個(gè)進(jìn)度條也提供了幾種選項(xiàng)。
相關(guān)文檔:https://tqdm.github.io/
Alive Progress
顧名思義,這個(gè)庫(kù)可以使得進(jìn)度條變得生動(dòng)起來(lái),它比原來(lái)我們見(jiàn)過(guò)的進(jìn)度條多了一些動(dòng)畫(huà)效果。
從代碼角度來(lái)說(shuō)比較相似:
from alive_progress import alive_barimport
timemylist = [1,2,3,4,5,6,7,8]
with alive_bar(len(mylist)) as bar:
for i in mylist:
bar()
time.sleep(1)
進(jìn)度條的外觀和預(yù)期差不多:
這種進(jìn)度條有一些與眾不同的功能,使用起來(lái)會(huì)比較有趣,功能詳情可見(jiàn)項(xiàng)目:https://github.com/rsalmei/alive-progress
PySimpleGUI
(1) 用 PySimpleGUI 得到圖形化進(jìn)度條
我們可以加一行簡(jiǎn)單的代碼,在命令行腳本中得到圖形化進(jìn)度條。
為了實(shí)現(xiàn)上述內(nèi)容,我們需要的代碼是:
import PySimpleGUI as sgimport
timemylist = [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)
(2) PySimpleGUI 應(yīng)用程序中的進(jìn)度條
項(xiàng)目作者之前曾經(jīng)在 GitHub 上討論過(guò)「如何快速啟動(dòng) Python UI,然后使用 UI 創(chuàng)建比較工具」。在這個(gè)項(xiàng)目里,作者還討論了一下如何集成進(jìn)度條。
代碼如下:
import PySimpleGUI as sgimport
timemylist = [1,2,3,4,5,6,7,8]
progressbar = [ [sg.ProgressBar(len(mylist), orientation='h', size=(51, 10), key='progressbar')]]
outputwin = [ [sg.Output(size=(78,20))]]
layout = [ [sg.Frame('Progress',layout= progressbar)], [sg.Frame('Output', layout = outputwin)], [sg.Submit('Start'),sg.Cancel()]]
window = sg.Window('Custom Progress Meter', layout)
progress_bar = window['progressbar'] while True:
event, values = window.read(timeout=10)
if event == 'Cancel' or event is None:
break
elif event == 'Start':
for i,item in enumerate(mylist):
print(item)
time.sleep(1)
progress_bar.UpdateBar(i + 1)window.close()
沒(méi)錯(cuò),在 Python 腳本中使用進(jìn)度條只需要幾行代碼,一點(diǎn)也不復(fù)雜。有了進(jìn)度條,以后也不用再猜測(cè)腳本運(yùn)行地怎么樣了。
文章名稱(chēng):Python中常用的代碼進(jìn)度條庫(kù)
轉(zhuǎn)載注明:http://fisionsoft.com.cn/article/cdsepej.html


咨詢(xún)
建站咨詢(xún)
