电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

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

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

一、前言

quad quad 有時候在使用Python處理比較耗時操作的時候,為了便于觀察處理進(jìn)度,這時候就需要通過進(jìn)度條將處理情況進(jìn)行可視化展示,以便我們能夠及時了解情況。這對于第三方庫非常豐富的Python來說,想要實(shí)現(xiàn)這一功能并不是什么難事。quad quad tqdm就能非常完美的支持和解決這些問題,可以實(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)行需要較長時間時,進(jìn)度條可以很好的幫助我們了解整個代碼的運(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ù)據(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)操作或者遍歷表格的行列時,我們可以使用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ù)的時候,我們通過tqdm可以實(shí)時查看每一個進(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是可以手動換成其他內(nèi)容的 t.set_description('GEN %i'%i) #設(shè)置進(jìn)度條右邊顯示的信息 #注意:此處代碼中的gen lr lst是可以手動換成其他內(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è)置為中文時,竟然不會出現(xiàn)亂碼!!!!

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)容是十分重要的!!

1、我們在使用tqdm的時候,可以將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)度條時,我們會發(fā)現(xiàn)整個進(jìn)度條十分的難看,而在可能會出現(xiàn)多條進(jìn)度條的情況,這樣會讓我們的代碼顯得十分的難看,這顯然不是我們想要得到的結(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 可以看到,上面的代碼我們僅僅打印了兩百次,整個運(yùn)行結(jié)果就有多個進(jìn)度條,整體的視覺效果特別差。如果當(dāng)我們需要進(jìn)行成千上萬次迭代時,整個運(yùn)行結(jié)果將會不堪入目,比我們未使用進(jìn)度條時的結(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)度條的示例代碼

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

​ quad tqdm在阿拉伯語中的意思是“進(jìn)展”,是python中一個快速、擴(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)文章:
主站蜘蛛池模板: 高压绝缘垫-红色配电房绝缘垫-绿色高压绝缘地毯-上海苏海电气 | 贴片电容-贴片电阻-二三极管-国巨|三星|风华贴片电容代理商-深圳伟哲电子 | 炒货机-炒菜机-炒酱机-炒米机@霍氏机械 | 骨密度仪-骨密度测定仪-超声骨密度仪-骨龄测定仪-天津开发区圣鸿医疗器械有限公司 | 充气膜专家-气膜馆-PTFE膜结构-ETFE膜结构-商业街膜结构-奥克金鼎 | 【同风运车官网】一站式汽车托运服务平台,验车满意再付款 | 锂电池砂磨机|石墨烯砂磨机|碳纳米管砂磨机-常州市奥能达机械设备有限公司 | 仿清水混凝土_清水混凝土装修_施工_修饰_保护剂_修补_清水混凝土修复-德州忠岭建筑装饰工程 | 日本东丽膜_反渗透膜_RO膜价格_超滤膜_纳滤膜-北京东丽阳光官网 日本细胞免疫疗法_肿瘤免疫治疗_NK细胞疗法 - 免疫密码 | 塑钢课桌椅、学生课桌椅、课桌椅厂家-学仕教育设备首页 | 蜂窝块状沸石分子筛-吸附脱硫分子筛-萍乡市捷龙环保科技有限公司 | 澳洁干洗店加盟-洗衣店干洗连锁「澳洁干洗免费一对一贴心服务」 干洗加盟网-洗衣店品牌排行-干洗设备价格-干洗连锁加盟指南 | 北京网站建设-企业网站建设-建站公司-做网站-北京良言多米网络公司 | 运动木地板价格,篮球馆体育运动木地板生产厂家_欧氏地板 | 南京精锋制刀有限公司-纵剪机刀片_滚剪机刀片_合金刀片厂家 | 沥青车辙成型机-车托式混凝土取芯机-混凝土塑料试模|鑫高仪器 | 桑茶-七彩贝壳桑叶茶 长寿茶| 铝合金重力铸造_铝合金翻砂铸造_铝铸件厂家-东莞市铝得旺五金制品有限公司 | 上海单片机培训|重庆曙海培训分支机构—CortexM3+uC/OS培训班,北京linux培训,Windows驱动开发培训|上海IC版图设计,西安linux培训,北京汽车电子EMC培训,ARM培训,MTK培训,Android培训 | 山东钢衬塑罐_管道_反应釜厂家-淄博富邦滚塑防腐设备科技有限公司 | AGV叉车|无人叉车|AGV智能叉车|AGV搬运车-江西丹巴赫机器人股份有限公司 | 合肥汽车充电桩_安徽充电桩_电动交流充电桩厂家_安徽科帝新能源科技有限公司 | 佛山商标注册_商标注册代理|专利注册申请_商标注册公司_鸿邦知识产权 | 云南成考网_云南成人高考报名网 粤丰硕水性环氧地坪漆-防静电自流平厂家-环保地坪涂料代理 | 茶楼装修设计_茶馆室内设计效果图_云臻轩茶楼装饰公司 | 超声波破碎仪-均质乳化机(供应杭州,上海,北京,广州,深圳,成都等地)-上海沪析实业有限公司 | 青岛球场围网,青岛车间隔离网,青岛机器人围栏,青岛水源地围网,青岛围网,青岛隔离栅-青岛晟腾金属制品有限公司 | 空气净化器租赁,空气净化器出租,全国直租_奥司汀净化器租赁 | 压砖机_电动螺旋压力机_粉末成型压力机_郑州华隆机械tel_0371-60121717 | 加气混凝土砌块设备,轻质砖设备,蒸养砖设备,新型墙体设备-河南省杜甫机械制造有限公司 | 水冷式工业冷水机组_风冷式工业冷水机_水冷螺杆冷冻机组-深圳市普威机械设备有限公司 | 热回收盐水机组-反应釜冷水机组-高低温冷水机组-北京蓝海神骏科技有限公司 | 哈尔滨发电机,黑龙江柴油发电机组-北方星光 | 聚合氯化铝-碱式氯化铝-聚合硫酸铁-聚氯化铝铁生产厂家多少钱一吨-聚丙烯酰胺价格_河南浩博净水材料有限公司 | 山东聚盛新型材料有限公司-纳米防腐隔热彩铝板和纳米防腐隔热板以及钛锡板、PVDF氟膜板供应商 | 金联宇电缆总代理-金联宇集团-广东金联宇电缆实业有限公司 | 科研ELISA试剂盒,酶联免疫检测试剂盒,昆虫_植物ELISA酶免试剂盒-上海仁捷生物科技有限公司 | 东莞螺杆空压机_永磁变频空压机_节能空压机_空压机工厂批发_深圳螺杆空压机_广州螺杆空压机_东莞空压机_空压机批发_东莞空压机工厂批发_东莞市文颖设备科技有限公司 | 胶辊硫化罐_胶鞋硫化罐_硫化罐厂家-山东鑫泰鑫智能装备有限公司 意大利Frascold/富士豪压缩机_富士豪半封闭压缩机_富士豪活塞压缩机_富士豪螺杆压缩机 | 百度关键词优化_网站优化_SEO价格 - 云无限好排名| 金属雕花板_厂家直销_价格低-山东慧诚建筑材料有限公司 |