python實(shí)現(xiàn)進(jìn)度條的多種實(shí)現(xiàn)
有時(shí)候在使用Python處理比較耗時(shí)操作的時(shí)候,為了便于觀察處理進(jìn)度,這時(shí)候就需要通過(guò)進(jìn)度條將處理情況進(jìn)行可視化展示,以便我們能夠及時(shí)了解情況。這對(duì)于第三方庫(kù)非常豐富的Python來(lái)說(shuō),想要實(shí)現(xiàn)這一功能并不是什么難事。
tqdm就能非常完美的支持和解決這些問(wèn)題,可以實(shí)時(shí)輸出處理進(jìn)度而且占用的CPU資源非常少,支持循環(huán)處理、多進(jìn)程、遞歸處理、還可以結(jié)合linux的命令來(lái)查看處理情況,等進(jìn)度展示。
tqdm在阿拉伯語(yǔ)中的意思是“進(jìn)展”,是python中一個(gè)快速、擴(kuò)展性強(qiáng)的進(jìn)度條工具庫(kù),能讓我們了解代碼的運(yùn)行進(jìn)度,也能讓我們的運(yùn)行結(jié)果看起來(lái)顯得更加美觀而又高大上!!
先來(lái)看一下進(jìn)度條的效果。
示例代碼:
from tqdm import tqdm for i in tqdm(range(int(9e7))): pass
運(yùn)行結(jié)果:


可以看到,當(dāng)我們的代碼的運(yùn)行需要較長(zhǎng)時(shí)間時(shí),進(jìn)度條可以很好的幫助我們了解整個(gè)代碼的運(yùn)行進(jìn)度。
一、tqdm相關(guān)操作 1、迭代對(duì)象處理對(duì)于可以迭代的對(duì)象都可以使用下面這種方式,來(lái)實(shí)現(xiàn)可視化進(jìn)度,非常方便。
示例代碼:
import timefrom tqdm import tqdm for i in tqdm(range(100)): time.sleep(0.1) pass
運(yùn)行結(jié)果:

通過(guò)tqdm提供的set_description方法可以實(shí)時(shí)查看每次處理的數(shù)據(jù)。
示例代碼:
import timefrom tqdm import tqdm pbar = tqdm(['A', 'B', 'C', 'D', 'E', 'F'])for i in pbar: time.sleep(1) pbar.set_description('Processing %s' % i)
運(yùn)行結(jié)果:

在pandas中對(duì)大量數(shù)據(jù)進(jìn)行相關(guān)操作或者遍歷表格的行列時(shí),我們可以使用tqdm來(lái)了解代碼運(yùn)行情況。
示例代碼:
import timeimport pandas as pdfrom tqdm import tqdm df = pd.DataFrame({ ’Month’: [1, 2, 3, 4, 5, 2, 3, 4, 5, 1, 2, 3, 4], ’Name’: [’張三’, ’張三’, ’張三’, ’張三’, ’張三’, ’李四’, ’李四’, ’李四’, ’李四’, ’王五’, ’王五’, ’王五’, ’王五’], ’Sex’: [’男’, ’男’, ’女’, ’女’, ’女’, ’男’, ’男’, ’男’, ’男’, ’女’, ’女’, ’女’, ’女’]})for i in tqdm([’Month’, ’Name’, ’Sex’]): time.sleep(2) pass
運(yùn)行結(jié)果:

在使用多進(jìn)程或者嵌套循環(huán)處理任務(wù)的時(shí)候,我們通過(guò)tqdm可以實(shí)時(shí)查看每一個(gè)進(jìn)程任務(wù)的處理情況
示例代碼:
import timefrom tqdm import tqdm for i in tqdm(range(5), ascii=False, desc='1st process'): # ascii = True 時(shí)為## for j in tqdm(range(5), ascii=True, desc='2st process'):time.sleep(0.1)
運(yùn)行結(jié)果:

通過(guò)update方法可以控制每次進(jìn)度條更新的進(jìn)度。
示例代碼1:
import timefrom tqdm import tqdm # total參數(shù)設(shè)置進(jìn)度條的總長(zhǎng)度為100with tqdm(total=100) as pbar: for i in range(100):time.sleep(0.1)# 每次更新進(jìn)度條的長(zhǎng)度為1pbar.update(1)
運(yùn)行結(jié)果:

示例代碼2:
import timefrom tqdm import tqdm # total參數(shù)設(shè)置進(jìn)度條的總長(zhǎng)度為500with tqdm(total=500) as pbar: for i in range(100):time.sleep(0.1)# 每次更新進(jìn)度條的長(zhǎng)度為3pbar.update(3)
運(yùn)行結(jié)果:

除了上述方法之外,我們還能通過(guò)另外一種方法來(lái)實(shí)現(xiàn)操作。
示例代碼3:
import timefrom tqdm import tqdm # total參數(shù)設(shè)置進(jìn)度條的總長(zhǎng)度為100pbar = tqdm(total=100)for i in range(100): time.sleep(0.1) # 每次更新進(jìn)度條的長(zhǎng)度為1 pbar.update(1)# 關(guān)閉占用的資源pbar.close()
運(yùn)行結(jié)果:

另外,我們還能通過(guò)set_description和set_postfix方法設(shè)置進(jìn)度條顯示信息。
示例代碼:
import timefrom tqdm import trangefrom random import random, randint with trange(100) as t: for i in t:# 設(shè)置進(jìn)度條左邊顯示的信息# 注意:代碼中的GEN是可以手動(dòng)換成其它內(nèi)容的t.set_description('GEN %i' % i)# 設(shè)置進(jìn)度條右邊顯示的信息# 注意:此處代碼中的gen lr lst是可以手動(dòng)換成其它內(nèi)容的t.set_postfix(loss=random(), gen=randint(1, 999), lr='h', lst=[1, 2])time.sleep(0.1)
運(yùn)行結(jié)果:

令人震驚的是,當(dāng)我們將進(jìn)度條顯示的信息設(shè)置為中文時(shí),竟然不會(huì)出現(xiàn)亂碼!!!!
示例代碼:
import timefrom tqdm import trangefrom random import random, randint with trange(100) as t: for i in t:# 設(shè)置進(jìn)度條左邊顯示的信息# 注意:代碼中的GEN是可以手動(dòng)換成其它內(nèi)容的t.set_description('進(jìn)度 %i' % i)# 設(shè)置進(jìn)度條右邊顯示的信息# 注意:此處代碼中的gen lr lst是可以手動(dòng)換成其它內(nèi)容的t.set_postfix(損失=random(), 隨機(jī)=randint(1, 999), 名字='h', 列表=[1, 2])time.sleep(0.1)
運(yùn)行結(jié)果:

我們?cè)谑褂胻qdm的時(shí)候,可以將tqdm(range(n))替換為trange(n),讓你的代碼看起來(lái)更加簡(jiǎn)潔而又高大上!
示例代碼:
from tqdm import trangeimport time for i in trange(100): time.sleep(0.1) pass
運(yùn)行結(jié)果:

示例代碼1:
import timefrom tqdm import tqdmfor i in tqdm(range(100)): print('I’m tqdm!', end=’ ’) time.sleep(0.1)
運(yùn)行結(jié)果:

示例代碼2:
import timefrom tqdm import tqdm_notebook for i in tqdm_notebook(range(100), desc='demo'): time.sleep(0.1) print('I’m tqdm_notebook!', end=’ ’)
運(yùn)行結(jié)果:

到此這篇關(guān)于python實(shí)現(xiàn)進(jìn)度條的多種實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)python 進(jìn)度條內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. ASP中實(shí)現(xiàn)字符部位類(lèi)似.NET里String對(duì)象的PadLeft和PadRight函數(shù)2. XML解析錯(cuò)誤:未組織好 的解決辦法3. 小技巧處理div內(nèi)容溢出4. CSS可以做的幾個(gè)令你嘆為觀止的實(shí)例分享5. 得到XML文檔大小的方法6. 利用CSS3新特性創(chuàng)建透明邊框三角7. 解析原生JS getComputedStyle8. 淺談?dòng)蓀osition屬性引申的css進(jìn)階討論9. ASP實(shí)現(xiàn)加法驗(yàn)證碼10. 詳解瀏覽器的緩存機(jī)制

網(wǎng)公網(wǎng)安備