色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術(shù)文章
文章詳情頁

python tqdm實(shí)現(xiàn)進(jìn)度條的示例代碼

瀏覽:5日期:2022-07-05 18:08:24

一、前言

quad quad 有時(shí)候在使用Python處理比較耗時(shí)操作的時(shí)候,為了便于觀察處理進(jìn)度,這時(shí)候就需要通過進(jìn)度條將處理情況進(jìn)行可視化展示,以便我們能夠及時(shí)了解情況。這對于第三方庫非常豐富的Python來說,想要實(shí)現(xiàn)這一功能并不是什么難事。quad quad tqdm就能非常完美的支持和解決這些問題,可以實(shí)時(shí)輸出處理進(jìn)度而且占用的CPU資源非常少,支持循環(huán)處理、多進(jìn)程、遞歸處理、還可以結(jié)合linux的命令來查看處理情況,等進(jìn)度展示。

我們先來看一下進(jìn)度條的效果。

from tqdm import tqdmfor i in tqdm(range(int(9e6))): pass

python tqdm實(shí)現(xiàn)進(jìn)度條的示例代碼

可以看到,當(dāng)我們的代碼的運(yùn)行需要較長時(shí)間時(shí),進(jìn)度條可以很好的幫助我們了解整個(gè)代碼的運(yùn)行進(jìn)度。

1、安裝

tqdm的安裝十分簡單,只需要通過pip或conda就可以安裝。

2、pip安裝

pip install tqdm

3、conda安裝

conda install -c conda-forge tqdm

二、tqdm相關(guān)操作

1、迭代對象處理

對于可以迭代的對象都可以使用下面這種方式,來實(shí)現(xiàn)可視化進(jìn)度,非常方便。

from tqdm import tqdmimport timefor i in tqdm(range(100)): time.sleep(0.1) pass

100%|????????????????????????????????????????????????????????????????????????????????| 100/100 [00:10<00:00, 9.88it/s]

2、觀察處理的數(shù)據(jù)

通過tqdm提供的set_description方法可以實(shí)時(shí)查看每次處理的數(shù)據(jù)。

from tqdm import tqdmimport timepbar = tqdm(['A','B','C','D','E','F'])for c in pbar: time.sleep(1) pbar.set_description('Processing %s'%c)

python tqdm實(shí)現(xiàn)進(jìn)度條的示例代碼

3、pandas中使用tqdm

在pandas中對大量數(shù)據(jù)進(jìn)行相關(guān)操作或者遍歷表格的行列時(shí),我們可以使用tqdm來了解代碼運(yùn)行情況。

import pandas as pddf = 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’]): pass

100%|??????????????????????????????????????????????????????????????????????????????????| 3/3 [00:00<00:00, 4707.41it/s]

4、多進(jìn)程進(jìn)度條

在使用多進(jìn)程或者嵌套循環(huán)處理任務(wù)的時(shí)候,我們通過tqdm可以實(shí)時(shí)查看每一個(gè)進(jìn)程任務(wù)的處理情況

from tqdm import tqdmimport timefor i in tqdm(range(5), ascii=True,desc='1st process'): for j in tqdm(range(5), ascii=True,desc='2nd process'): time.sleep(0.01)

1st process: 0%|| 0/5 [00:00<?, ?it/s]2nd process: 0%|| 0/5 [00:00<?, ?it/s]2nd process: 100%|#######################################################################| 5/5 [00:00<00:00, 94.27it/s]2nd process: 0%|| 0/5 [00:00<?, ?it/s]1st process: 40%|############################4 | 2/5 [00:00<00:00, 18.09it/s]2nd process: 0%|| 0/5 [00:00<?, ?it/s]2nd process: 100%|#######################################################################| 5/5 [00:00<00:00, 93.95it/s]2nd process: 0%|| 0/5 [00:00<?, ?it/s]1st process: 80%|########################################################8 | 4/5 [00:00<00:00, 17.99it/s]2nd process: 0%|| 0/5 [00:00<?, ?it/s]1st process: 100%|#######################################################################| 5/5 [00:00<00:00, 17.86it/s]

5、自定義進(jìn)度條顯示信息

通過update方法可以控制每次進(jìn)度條更新的進(jìn)度。

from tqdm import tqdmimport time#total參數(shù)設(shè)置進(jìn)度條的總長度為100with tqdm(total=100) as pbar: for i in range(100): time.sleep(0.05) #每次更新進(jìn)度條的長度為1 pbar.update(1)

python tqdm實(shí)現(xiàn)進(jìn)度條的示例代碼

除了上述方法之外,我們還能通過另外一種方法來實(shí)現(xiàn)操作。

from tqdm import tqdmimport time#total參數(shù)設(shè)置進(jìn)度條的總長度為100pbar = tqdm(total=100)for i in range(100): time.sleep(0.05) #每次更新進(jìn)度條的長度為1 pbar.update(1)#關(guān)閉占用的資源pbar.close()

python tqdm實(shí)現(xiàn)進(jìn)度條的示例代碼

另外,我們還能通過set_description和set_postfix方法設(shè)置進(jìn)度條顯示信息。

from tqdm import trangefrom random import random,randintimport timewith trange(100) as t: for i in t: #設(shè)置進(jìn)度條左邊顯示的信息 #注意:代碼中的HVAE是可以手動(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)

GEN 99: 100%|???????????????????????????????| 100/100 [00:10<00:00, 9.77it/s, gen=190, loss=0.00811, lr=h, lst=[1, 2]]

令人震驚的是,當(dāng)我們將進(jìn)度條顯示的信息設(shè)置為中文時(shí),竟然不會(huì)出現(xiàn)亂碼?。。。?/p>

from tqdm import trangefrom random import random,randintimport timewith trange(100) as t: for i in t: #設(shè)置進(jìn)度條左邊顯示的信息 t.set_description('進(jìn)度 %i'%i) #設(shè)置進(jìn)度條右邊顯示的信息 t.set_postfix(loss=random(),隨機(jī)=randint(1,999),名字='h',列表=[1,2]) time.sleep(0.1)

進(jìn)度 99: 100%|????????????????????????????????????| 100/100 [00:10<00:00, 9.75it/s, loss=0.975, 列表=[1, 2], 名字=h, 隨機(jī)=469]

三、其他相關(guān)操作

​ Last but not least??!最后的內(nèi)容是十分重要的?。?/p>

1、我們在使用tqdm的時(shí)候,可以將tqdm(range(n))替換為trange(n),讓你的代碼看起來更加簡潔而又高大上!

from tqdm import tqdm,trangeimport timefor i in trange(100): time.sleep(0.1) pass

100%|????????????????????????????????????????????????????????????????????????????????| 100/100 [00:10<00:00, 9.90it/s]

2、當(dāng)我們在jupyter notebook中使用進(jìn)度條時(shí),我們會(huì)發(fā)現(xiàn)整個(gè)進(jìn)度條十分的難看,而在可能會(huì)出現(xiàn)多條進(jìn)度條的情況,這樣會(huì)讓我們的代碼顯得十分的難看,這顯然不是我們想要得到的結(jié)果。

我們先來感受一下,這種丑丑的運(yùn)行結(jié)果。

from tqdm import tqdmfor i in tqdm(range(int(200))): print(’tqdm’,end=’ ’)

0%| | 0/200 [00:00<?, ?it/s]tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm 68%|?????????????????????????????????????????????????????? | 137/200 [00:00<00:00, 1360.43it/s]tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm tqdm 100%|??????????????????????????????????????????????????????????????????????????????| 200/200 [00:00<00:00, 1337.14it/s]

quad 可以看到,上面的代碼我們僅僅打印了兩百次,整個(gè)運(yùn)行結(jié)果就有多個(gè)進(jìn)度條,整體的視覺效果特別差。如果當(dāng)我們需要進(jìn)行成千上萬次迭代時(shí),整個(gè)運(yùn)行結(jié)果將會(huì)不堪入目,比我們未使用進(jìn)度條時(shí)的結(jié)果更加難看,顯然這不是我們想看到的。

tqdm針對jupyter notebook添加了專門的進(jìn)度條美化方法,使用tqdm_notebook()方法,我們看看效果:

from tqdm import tqdm_notebookimport timefor i in tqdm_notebook(range(100),desc=’demo:’): time.sleep(0.01) print(’tqdm’,end=’ ’)

python tqdm實(shí)現(xiàn)進(jìn)度條的示例代碼

可以看到,整個(gè)運(yùn)行結(jié)果立刻變得美觀而又清晰了!

​ quad tqdm在阿拉伯語中的意思是“進(jìn)展”,是python中一個(gè)快速、擴(kuò)展性強(qiáng)的進(jìn)度條工具庫,能讓我們了解代碼的運(yùn)行進(jìn)度,也能讓我們的運(yùn)行結(jié)果看起來顯得更加美觀而又高大上?。?喜歡的小伙伴趕緊用起來吧??!

到此這篇關(guān)于python tqdm實(shí)現(xiàn)進(jìn)度條的示例代碼的文章就介紹到這了,更多相關(guān)python tqdm進(jìn)度條內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 久久高清一区二区三区 | 国产片一级 | 黄色影院在线 | 亚洲夜夜爽 | 巨乳激情 | 天天视频一区二区三区 | 亚洲日本va午夜中文字幕一区 | 国产在线一二三区 | 男人看片网址 | 国产一区二区三区欧美精品 | 精品国产综合成人亚洲区 | 亚洲成人毛片 | 精品国产系列 | 女人张开腿让男人捅的视频 | 国产浮力第一页草草影院 | 宅男66lu国产乱在线观看 | 国内精品成人女用 | 久久综合九九亚洲一区 | 一级毛片免费在线 | 搞黄网站免费观看 | 成人18视频在线观看 | a级午夜毛片免费一区二区 a级性生活视频 | 精品久久久视频 | a级毛片免费 | 美国免费三片在线观看 | 99在线热播精品免费 | 美国一级免费毛片 | 在线观看一级毛片 | 欧美理论大片清免费观看 | 91精品手机国产露脸 | 美女张开腿让我 | 国产精品香蕉一区二区三区 | 一级黄色免费网站 | 一区二三国产 | 午夜免费一级片 | 国产成人亚洲欧美三区综合 | 欧美一级大黄特黄毛片视频 | 日韩三级视频 | 亚洲综合日韩精品欧美综合区 | 色一情 | 国产精品久久久久久搜索 |