日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
使用tqdm在Python應(yīng)用中顯示進(jìn)度

阿拉米語(yǔ),希伯來(lái)語(yǔ)和阿拉伯語(yǔ)中的閃米特語(yǔ)根 q-d-m 通常與前進(jìn)或進(jìn)度有關(guān)。阿拉伯語(yǔ) taqaddum (?????)的意思是“進(jìn)度”。進(jìn)度是很重要的。正如每部感覺(jué)良好的電影都會(huì)告訴你,旅程和目的地同樣重要。

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專(zhuān)注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、小程序設(shè)計(jì)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了東遼免費(fèi)建站歡迎大家使用!

大多數(shù)程序都有一個(gè)明確的目標(biāo),一個(gè)期望的最終狀態(tài)。有時(shí),計(jì)算這個(gè)最終狀態(tài)可能需要很長(zhǎng)的時(shí)間。雖然計(jì)算機(jī)沒(méi)有感情不在乎,但人卻在乎。人類(lèi)并不樂(lè)意坐在原地等待,而看不到任何明顯的進(jìn)展跡象。疑問(wèn)不斷蔓延。程序崩潰了嗎?磁盤(pán)性能是否抖動(dòng)?操作系統(tǒng)是否把所有的計(jì)算資源都分配給了其他任務(wù)?

就像正義一樣,進(jìn)度必須被看到,而不僅僅是完成。Python 庫(kù) tqdm 有助于使進(jìn)度變得明確。

tqdm 模塊可在控制臺(tái)下工作,但它也專(zhuān)門(mén)支持了我最喜歡的環(huán)境之一 Jupyter。要在 Jupyter 中使用 tqdm,你需要導(dǎo)入 notebook 子模塊并安裝 ipywidgets 。notebook 子模塊與 tqdm 接口兼容。

這意味著你可以做一些導(dǎo)入時(shí)操作來(lái)導(dǎo)入正確的模塊,同時(shí)保持 tqdm 的用法不變。訣竅是檢查 __main__ 模塊是否具有全局變量 get_ipython。雖然這只是一個(gè)啟發(fā)式的方法,但卻是一個(gè)相當(dāng)準(zhǔn)確的方法:

 
 
 
 
  1. import sys 
  2. if hasattr(sys.modules["__main__"], "get_ipython"): 
  3.     from tqdm import notebook as tqdm 
  4. else: 
  5.     import tqdm 

最簡(jiǎn)單的情況是,某件事情需要運(yùn)行一定的迭代次數(shù)(事先已知),而每一次迭代的時(shí)間都差不多。例如,有一個(gè)計(jì)算任何數(shù)字的平方根的算法,通過(guò)從 1 作為猜測(cè)值開(kāi)始,然后計(jì)算出一個(gè)改進(jìn)后的猜測(cè)值:

 
 
 
 
  1. def improve_guess(rt, n): 
  2.     return (rt + n/rt) / 2 

一點(diǎn)點(diǎn)的改進(jìn)可以讓你更加接近該平方根。例如,你可以計(jì)算 2 的平方根:

 
 
 
 
  1. guess = 1 
  2. target = 2 
  3. for i in tqdm.trange(10): 
  4.     guess = improve_guess(guess, target) 

 

精確了到小數(shù)點(diǎn)后 10 位!

 
 
 
 
  1. round(2 - guess*guess, 10) 
 
 
 
 
  1. 0.0 

一個(gè)稍微復(fù)雜一點(diǎn)的例子是,當(dāng)元素的數(shù)量是已知的,而處理每個(gè)元素需要類(lèi)似的時(shí)間。例如,你可以計(jì)算一些數(shù)字的乘積。為此,你需要一些隨機(jī)數(shù):

 
 
 
 
  1. import random 
  2. numbers = [random.uniform(0, 2.8) for i in range(100)] 
  3. numbers[:5] 
 
 
 
 
  1. [2.6575636572230916, 
  2. 0.1286674965830302, 
  3. 1.0634250104041332, 
  4. 1.1760969844376505, 
  5. 0.45192978568125486] 

現(xiàn)在有了這些數(shù)字,可以將它們相乘了。使用 tqdm 最簡(jiǎn)單的方法是包裝一個(gè) Python 迭代函數(shù)。數(shù)值是一樣的,但是 tqdm 會(huì)顯示一個(gè)進(jìn)度條:

 
 
 
 
  1. result = 1 
  2. for num in tqdm.tqdm(numbers): 
  3.     result *= num 
  4. result 
 
 
 
 
  1. 2.4081854901728303 

tqdm output

然而,并不是所有的事情都可以預(yù)測(cè)。最不容易預(yù)測(cè)的事情之一就是網(wǎng)絡(luò)速度。當(dāng)你下載一個(gè)大文件時(shí),衡量進(jìn)度的唯一方法就是檢查已經(jīng)下載了多少:

 
 
 
 
  1. url = "https://www.python.org/ftp/python/3.9.0/Python-3.9.0.tgz" 
  2. import httpx 
  3. with httpx.stream("GET", url) as response: 
  4.     total = int(response.headers["Content-Length"]) 
  5.     with tqdm.tqdm(totaltotal=total) as progress: 
  6.         for chunk in response.iter_bytes(): 
  7.             progress.update(len(chunk)) 

tqdm output

有時(shí),“嵌套”進(jìn)度條是有意義的。例如,如果你要下載一個(gè)目錄,你就需要一個(gè)進(jìn)度條來(lái)跟蹤文件,并為每個(gè)文件設(shè)置一個(gè)進(jìn)度條。

下面是一個(gè)例子(但沒(méi)有實(shí)際下載一個(gè)目錄):

 
 
 
 
  1. files = [f"vid-{i}.mp4" for i in range(4)] 
  2. for fname in tqdm.tqdm(files, desc="files"): 
  3.     total = random.randrange(10**9, 2 * 10**9) 
  4.     with tqdm.tqdm(totaltotal=total, desc=fname) as progress: 
  5.         current = 0 
  6.         while current < total: 
  7.             chunk_size = min(random.randrange(10**3, 10**5), total - current) 
  8.             current += chunk_size 
  9.             if random.uniform(0, 1) < 0.01: 
  10.                 time.sleep(0.1) 
  11.             progress.update(chunk_size) 

tqdm output

所以,如果你的程序需要一段時(shí)間才能顯示最終結(jié)果,為避免讓你的用戶感到沮喪。請(qǐng)顯示它的進(jìn)度!


分享文章:使用tqdm在Python應(yīng)用中顯示進(jìn)度
文章網(wǎng)址:http://m.5511xx.com/article/dpcgdsi.html