Python進度條神器tqdm使用實例詳解
各位Python高手,今天我要給大家介紹一個好用的庫,它就是:tqdm
tqdm在阿拉伯語中的意思是 "進展",所以這個庫也被稱為 "快速進展條"。不得不說,這個名字真的很有創(chuàng)意!
讓我們想象一下,你正在運行一個耗時的數(shù)據(jù)處理任務(wù)或者訓(xùn)練一個復(fù)雜的深度學(xué)習(xí)模型。你坐在那里,盯著屏幕,焦急地等待程序完成。這種等待的痛苦,我想你我都有切身體會。這時候,有個可視化的進度條會不會讓你感覺好很多呢?這就是我們今天要推薦的 tqdm 庫的功能。
tqdm 是一個 Python 快速、可擴展的進度條工具庫,它有很多優(yōu)點:
易于使用:只需在 Python 循環(huán)中包裹你的迭代器,一行代碼就能產(chǎn)生一個精美的進度條。
靈活:它可以和 for 循環(huán)、pandas dataframe的 apply 函數(shù)以及 Python 的 map 函數(shù)等等配合使用。
高效:tqdm 使用了智能算法,即使在數(shù)據(jù)流非??斓那闆r下,也不會拖慢你的代碼速度。
讓我們看一下 tqdm 在機器學(xué)習(xí)任務(wù)中的應(yīng)用示例:
from tqdm import tqdm import time for i in tqdm(range(100)): # 假設(shè)我們正在進行一些耗時的操作,比如訓(xùn)練深度學(xué)習(xí)模型 time.sleep(0.01)
運行這段代碼,你會看到一個動態(tài)更新的進度條。tqdm 會告訴你還有多少項需要處理,預(yù)計剩余時間,以及當前的處理速度。
你會看到一個動態(tài)更新的進度條。tqdm 會告訴你還有多少項需要處理,預(yù)計剩余時間,以及當前的處理速度。
100%|██████████| 100/100 [00:01<00:00, 97.31it/s]
我們繼續(xù)深入到 tqdm 的更多使用場景和用法。
01
你是否曾在下載大文件時,想要知道下載的進度呢?tqdm 可以很好地滿足你的需求??纯聪旅娴拇a:
import requests from tqdm import tqdm response = requests.get(url, stream=True) # 把stream參數(shù)設(shè)置為True file_size = int(response.headers['Content-Length']) chunk = 1 chunk_size = 1024 num_bars = int(file_size / chunk_size) with open(filename, 'wb') as fp: for chunk in tqdm(response.iter_content(chunk_size=chunk_size), total=num_bars, unit='KB', desc=filename, leave=True): fp.write(chunk)
在上面的代碼中,我們首先獲取到要下載文件的大小。然后,我們在 tqdm 中設(shè)置總的進度條數(shù)目為文件大小除以每個進度條代表的字節(jié)數(shù)。這樣,當我們下載每一個字節(jié)塊并寫入文件時,tqdm 就會自動更新進度條。
02
在機器學(xué)習(xí)中,我們經(jīng)常需要對大規(guī)模的數(shù)據(jù)進行預(yù)處理。使用 tqdm,我們可以很直觀地看到數(shù)據(jù)預(yù)處理的進度。
import pandas as pd from tqdm import tqdm tqdm.pandas() # 假設(shè)我們有一個大的 dataframe,我們想要對其 'text' 列進行一些預(yù)處理 df['processed_text'] = df['text'].progress_apply(lambda x: preprocess(x))
在上面的代碼中,我們首先通過 tqdm.pandas() 方法對pandas 進行 patch。然后,我們就可以在 pandas 的 apply 方法中使用 progress_apply,這樣就可以在數(shù)據(jù)處理的同時顯示進度條。
03
在訓(xùn)練深度學(xué)習(xí)模型時,我們經(jīng)常需要迭代大量的 epochs。使用 tqdm,我們可以清晰地看到模型訓(xùn)練的進度。
from tqdm import tqdm # 假設(shè)我們有一個訓(xùn)練數(shù)據(jù)集 train_dataloader 和一個模型 model for epoch in range(num_epochs): epoch_iterator = tqdm(train_dataloader, desc= "Training (Epoch %d)" % epoch) for step, batch in enumerate(epoch_iterator): # 模型訓(xùn)練的代碼 # ...
04
在許多情況下,我們的代碼可能包含嵌套循環(huán)。在這種情況下,我們可以使用 tqdm 創(chuàng)建多個進度條。
from tqdm import tqdm import time for i in tqdm(range(100), desc="Outer loop"): for j in tqdm(range(10), desc="Inner loop", leave=False): # 執(zhí)行一些耗時的操作 time.sleep(0.01)
在這段代碼中,我們創(chuàng)建了兩個進度條,一個用于外部循環(huán),一個用于內(nèi)部循環(huán)。leave=False 選項將在內(nèi)部循環(huán)結(jié)束后刪除內(nèi)部循環(huán)的進度條。
05
有時候,我們可能需要手動更新進度條。例如,當我們在下載文件或處理批量數(shù)據(jù)時,我們可能一次處理多個項目。在這種情況下,我們可以使用 update 方法。
from tqdm import tqdm import time with tqdm(total=100) as pbar: for i in range(10): # 執(zhí)行一些耗時的操作 time.sleep(0.1) pbar.update(10)
在這段代碼中,我們首先創(chuàng)建了一個進度條,然后在循環(huán)中使用 update 方法手動更新進度條的值。
總結(jié):
本文介紹了Python進度條神器tqdm的使用方法和實例。tqdm是一個非常實用的工具,可以幫助我們更好地了解程序的運行情況,提高代碼的可讀性和可維護性。在使用tqdm時,我們需要注意以下幾點:
- 在循環(huán)中使用tqdm時,需要將可迭代對象作為參數(shù)傳遞給tqdm函數(shù)。
- 可以通過設(shè)置參數(shù)來自定義進度條的樣式和顯示方式。
- 如果需要在多線程或多進程中使用tqdm,需要使用tqdm的并發(fā)版本。
- 在使用tqdm時,需要注意進度條的更新頻率,避免過于頻繁地更新進度條,影響程序的性能。
總之,tqdm是一個非常實用的工具,可以幫助我們更好地了解程序的運行情況,提高代碼的可讀性和可維護性。
以上就是 tqdm 的一些更深入的用法。你應(yīng)該可以看出 tqdm 是一個非常強大的工具,無論你在做什么,只要你需要等待,就可以使用 tqdm。希望你可以在你的代碼中嘗試使用 tqdm,看看它如何提升你的編程體驗。希望本文能夠?qū)Υ蠹覍W(xué)習(xí)和使用tqdm有所幫助。
相關(guān)文章
opencv?python中cv.approxPolyDP函數(shù)詳細解釋
這篇文章主要給大家介紹了關(guān)于opencv?python中cv.approxPolyDP函數(shù)詳細解釋的相關(guān)資料,OpenCV中的approxPolyDP()函數(shù)用于對形狀進行逼近,以減少多邊形的頂點數(shù),可以用于對圖像輪廓點進行多邊形擬合,需要的朋友可以參考下2024-01-01Python編程二分法實現(xiàn)冒泡算法+快速排序代碼示例
這篇文章主要介紹了Python編程二分法實現(xiàn)冒泡算法+快速排序代碼示例,具有一定借鑒價值,需要的朋友可以參考下2018-01-01python調(diào)用API實現(xiàn)智能回復(fù)機器人
這篇文章主要為大家詳細介紹了python調(diào)用API實現(xiàn)智能回復(fù)機器人,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-04-04Python Selenium實現(xiàn)無可視化界面過程解析
這篇文章主要介紹了Python Selenium實現(xiàn)無可視化界面過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-08-08Python批量修改文件名操作指南(文件名的替換、前綴、后綴的添加)
很多時候我們手上有一堆文件,需要修改名稱時需要一個一個修改,太麻煩了,這篇文章主要給大家介紹了關(guān)于Python批量修改文件名的相關(guān)資料,包括文件名的替換、前綴、后綴的添加的相關(guān)資料,需要的朋友可以參考下2024-04-04