本篇內(nèi)容主要講解“如何使用tqdm在Python應(yīng)用中顯示進(jìn)度”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“如何使用tqdm在Python應(yīng)用中顯示進(jìn)度”吧!
10多年專注成都網(wǎng)站制作,成都企業(yè)網(wǎng)站建設(shè),個(gè)人網(wǎng)站制作服務(wù),為大家分享網(wǎng)站制作知識(shí)、方案,網(wǎng)站設(shè)計(jì)流程、步驟,成功服務(wù)上千家企業(yè)。為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù),專注于成都企業(yè)網(wǎng)站建設(shè),高端網(wǎng)頁制作,對(duì)成都軟裝設(shè)計(jì)等多個(gè)領(lǐng)域,擁有豐富的網(wǎng)站維護(hù)經(jīng)驗(yàn)。
阿拉米語,希伯來語和阿拉伯語中的閃米特語根 q-d-m 通常與前進(jìn)或進(jìn)度有關(guān)。阿拉伯語 taqaddum (?????)的意思是“進(jìn)度”。進(jìn)度是很重要的。正如每部感覺良好的電影都會(huì)告訴你,旅程和目的地同樣重要。

大多數(shù)程序都有一個(gè)明確的目標(biāo),一個(gè)期望的最終狀態(tài)。有時(shí),計(jì)算這個(gè)最終狀態(tài)可能需要很長的時(shí)間。雖然計(jì)算機(jī)沒有感情不在乎,但人卻在乎。人類并不樂意坐在原地等待,而看不到任何明顯的進(jìn)展跡象。疑問不斷蔓延。程序崩潰了嗎?磁盤性能是否抖動(dòng)?操作系統(tǒng)是否把所有的計(jì)算資源都分配給了其他任務(wù)?
就像正義一樣,進(jìn)度必須被看到,而不僅僅是完成。Python 庫 tqdm 有助于使進(jìn)度變得明確。
tqdm 模塊可在控制臺(tái)下工作,但它也專門支持了我最喜歡的環(huán)境之一 Jupyter。要在 Jupyter 中使用 tqdm,你需要導(dǎo)入 notebook 子模塊并安裝 ipywidgets 。notebook 子模塊與 tqdm 接口兼容。
這意味著你可以做一些導(dǎo)入時(shí)操作來導(dǎo)入正確的模塊,同時(shí)保持 tqdm 的用法不變。訣竅是檢查 __main__ 模塊是否具有全局變量 get_ipython。雖然這只是一個(gè)啟發(fā)式的方法,但卻是一個(gè)相當(dāng)準(zhǔn)確的方法:
import sys if hasattr(sys.modules["__main__"], "get_ipython"): from tqdm import notebook as tqdm else: import tqdm
最簡單的情況是,某件事情需要運(yùn)行一定的迭代次數(shù)(事先已知),而每一次迭代的時(shí)間都差不多。例如,有一個(gè)計(jì)算任何數(shù)字的平方根的算法,通過從 1 作為猜測值開始,然后計(jì)算出一個(gè)改進(jìn)后的猜測值:
def improve_guess(rt, n): return (rt + n/rt) / 2
一點(diǎn)點(diǎn)的改進(jìn)可以讓你更加接近該平方根。例如,你可以計(jì)算 2 的平方根:
guess = 1 target = 2 for i in tqdm.trange(10): guess = improve_guess(guess, target)

精確了到小數(shù)點(diǎn)后 10 位!
round(2 - guess*guess, 10)
0.0
一個(gè)稍微復(fù)雜一點(diǎn)的例子是,當(dāng)元素的數(shù)量是已知的,而處理每個(gè)元素需要類似的時(shí)間。例如,你可以計(jì)算一些數(shù)字的乘積。為此,你需要一些隨機(jī)數(shù):
import random numbers = [random.uniform(0, 2.8) for i in range(100)] numbers[:5]
[2.6575636572230916, 0.1286674965830302, 1.0634250104041332, 1.1760969844376505, 0.45192978568125486]
現(xiàn)在有了這些數(shù)字,可以將它們相乘了。使用 tqdm 最簡單的方法是包裝一個(gè) Python 迭代函數(shù)。數(shù)值是一樣的,但是 tqdm 會(huì)顯示一個(gè)進(jìn)度條:
result = 1 for num in tqdm.tqdm(numbers): result *= num result
2.4081854901728303

tqdm output
然而,并不是所有的事情都可以預(yù)測。最不容易預(yù)測的事情之一就是網(wǎng)絡(luò)速度。當(dāng)你下載一個(gè)大文件時(shí),衡量進(jìn)度的唯一方法就是檢查已經(jīng)下載了多少:
url = "https://www.python.org/ftp/python/3.9.0/Python-3.9.0.tgz" import httpx with httpx.stream("GET", url) as response: total = int(response.headers["Content-Length"]) with tqdm.tqdm(totaltotal=total) as progress: for chunk in response.iter_bytes(): progress.update(len(chunk))
tqdm output
有時(shí),“嵌套”進(jìn)度條是有意義的。例如,如果你要下載一個(gè)目錄,你就需要一個(gè)進(jìn)度條來跟蹤文件,并為每個(gè)文件設(shè)置一個(gè)進(jìn)度條。
下面是一個(gè)例子(但沒有實(shí)際下載一個(gè)目錄):
files = [f"vid-{i}.mp4" for i in range(4)] for fname in tqdm.tqdm(files, desc="files"): total = random.randrange(10**9, 2 * 10**9) with tqdm.tqdm(totaltotal=total, desc=fname) as progress: current = 0 while current < total: chunk_size = min(random.randrange(10**3, 10**5), total - current) current += chunk_size if random.uniform(0, 1) < 0.01: time.sleep(0.1) progress.update(chunk_size)
tqdm output
所以,如果你的程序需要一段時(shí)間才能顯示最終結(jié)果,為避免讓你的用戶感到沮喪。請顯示它的進(jìn)度!
到此,相信大家對(duì)“如何使用tqdm在Python應(yīng)用中顯示進(jìn)度”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
網(wǎng)站標(biāo)題:如何使用tqdm在Python應(yīng)用中顯示進(jìn)度
標(biāo)題URL:http://www.chinadenli.net/article22/gisijc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設(shè)計(jì)公司、網(wǎng)站改版、網(wǎng)站營銷、軟件開發(fā)、服務(wù)器托管、網(wǎng)站設(shè)計(jì)公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)