
作者:閑歡
來源:Python 技術(shù)
作為程序員,我們經(jīng)常會(huì)遇到比較耗時(shí)的操作,這個(gè)時(shí)候我們大多數(shù)人會(huì)無助地等待程序執(zhí)行完成,有些人會(huì)趁機(jī)摸一下魚,以便渡過這個(gè)無聊看起來又有點(diǎn)未知的時(shí)間,我就是這樣做的。
但是,我們也可以選擇另一種方式——用一個(gè)炫酷的進(jìn)度條,來觀察處理進(jìn)度,也可以及時(shí)了解程序運(yùn)行的情況,做到心中有數(shù)。
今天就給大家介紹 Python 的一個(gè)庫—— tqdm ,它就能非常完美的支持和解決這些問題,可以實(shí)時(shí)輸出處理進(jìn)度而且占用的CPU資源非常少,支持windows、Linux、mac等系統(tǒng),支持循環(huán)處理、多進(jìn)程、遞歸處理、還可以結(jié)合linux的命令來查看處理情況,等進(jìn)度展示。
我們常見的安裝方式是直接 pip 安裝:
pip install tqdm
但是我用這種方式安裝的時(shí)候報(bào)錯(cuò):
看報(bào)錯(cuò)的意思是這個(gè) pypi.org 不是可信網(wǎng)站,于是我加上了:
pip install tqdm --trusted-host pypi.org
結(jié)果還是這個(gè)報(bào)錯(cuò)。
這有點(diǎn)無語了。我接著嘗試使用豆瓣的源來進(jìn)行安裝:
pip install -i https://pypi.douban.com/simple tqdm
還是一樣的報(bào)錯(cuò)。
但是我瀏覽器訪問這個(gè)網(wǎng)站沒問題:https://pypi.org/project/tqdm/
既然這樣,我就把文件下載下來再安裝吧。
下載下來之后,我將 whl 文件放在我的項(xiàng)目目錄,然后使用命令行安裝:
pip install --trusted-host pypi.org tqdm-4.62.3-py2.py3-none-any.whl
這回安裝沒報(bào)錯(cuò)。我再用命令檢查一下安裝是否成功:
pip show tqdm
命令行成功顯示信息:
Name: tqdm Version: 4.62.3 Summary: Fast, Extensible Progress Meter Home-page: https://tqdm.github.io Author: None Author-email: None License: MPLv2.0, MIT Licences Location: c:pworkspacemypyvenvlibsite-packages Requires: colorama Required-by:
折騰了半天,終于安裝成功了!
本文的示例都是在 jupyter notebook 環(huán)境下運(yùn)行的,不同環(huán)境運(yùn)行的效果會(huì)有差別。
我們進(jìn)入 tqdm 的源碼,可以找到 __init__ 方法:
def __init__(self, iterable=None, desc=None, total=None, leave=True, file=None,
ncols=None, mininterval=0.1, maxinterval=10.0, miniters=None,
ascii=None, disable=False, unit='it', unit_scale=False,
dynamic_ncols=False, smoothing=0.3, bar_format=None, initial=0,
position=None, postfix=None, unit_divisor=1000, write_bytes=None,
lock_args=None, nrows=None, colour=None, delay=0, gui=False,
**kwargs):
從中我們可以看到 tqdm 支持很多參數(shù),下面列一些常見的參數(shù):
直接將可迭代對(duì)象傳入作為參數(shù),我們來看一下例子:
from tqdm import tqdm from time import sleep for char in tqdm(['h', 'e', 'l', 'l', 'o']):
sleep(0.25) for i in tqdm(range(100)):
sleep(0.05)
實(shí)現(xiàn)的進(jìn)度條效果如下:
這里面的 tqdm(range()) 我們也可以用 tqdm 提供的 trange() 來代替,可以簡化代碼。
from tqdm.notebook import trange for i in trange(100):
sleep(0.05)
實(shí)現(xiàn)的進(jìn)度條效果如下:
我們還可以為進(jìn)度條添加描述:
pbar = tqdm(range(5)) for char in pbar:
pbar.set_description("Progress %d" %char) sleep(1)
實(shí)現(xiàn)的進(jìn)度條效果如下:
接下來,我要改變一下進(jìn)度條的顏色:
我們可以使用 with 語句來手動(dòng)控制進(jìn)度條。
with tqdm(total=100) as pbar: for i in range(1, 5): sleep(1) # 更新進(jìn)度 pbar.update(10*i)
這里我設(shè)置進(jìn)度條的更新的間隔,設(shè)置總數(shù)為 total=100,然后分四次,使得進(jìn)度條按 10%,20%,30%,40%的間隔來更新。
實(shí)現(xiàn)的進(jìn)度條效果如下:
接下來, 我要改變一下進(jìn)度條的顏色:
with tqdm(total=100, colour='yellow') as pbar: for i in range(1, 5): sleep(1) # 更新進(jìn)度 pbar.update(10*i)
我把進(jìn)度條改為了黃色。
接下來,我們來個(gè)嵌套進(jìn)度條玩玩。
for i in trange(3, desc='outer loop'): for i in trange(100, desc='inner loop', leave=False): sleep(0.01)
這里我用兩層 for 循環(huán)實(shí)現(xiàn)了嵌套,并且將內(nèi)層的 參數(shù) leave 設(shè)置為 False ,意思是內(nèi)層的進(jìn)度條每執(zhí)行一次都會(huì)消失。
我們來看看最終運(yùn)行的效果:
這個(gè)進(jìn)度條庫的使用方法是不是很簡單,幾行代碼就能為我們的程序增色不少。心動(dòng)不如行動(dòng),趕快用起來吧!
數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼
若不方便掃碼,搜微信號(hào):CDAshujufenxi
SQL Server 中 CONVERT 函數(shù)的日期轉(zhuǎn)換:從基礎(chǔ)用法到實(shí)戰(zhàn)優(yōu)化 在 SQL Server 的數(shù)據(jù)處理中,日期格式轉(zhuǎn)換是高頻需求 —— 無論 ...
2025-09-18MySQL 大表拆分與關(guān)聯(lián)查詢效率:打破 “拆分必慢” 的認(rèn)知誤區(qū) 在 MySQL 數(shù)據(jù)庫管理中,“大表” 始終是性能優(yōu)化繞不開的話題。 ...
2025-09-18CDA 數(shù)據(jù)分析師:表結(jié)構(gòu)數(shù)據(jù) “獲取 - 加工 - 使用” 全流程的賦能者 表結(jié)構(gòu)數(shù)據(jù)(如數(shù)據(jù)庫表、Excel 表、CSV 文件)是企業(yè)數(shù)字 ...
2025-09-18DSGE 模型中的 Et:理性預(yù)期算子的內(nèi)涵、作用與應(yīng)用解析 動(dòng)態(tài)隨機(jī)一般均衡(Dynamic Stochastic General Equilibrium, DSGE)模 ...
2025-09-17Python 提取 TIF 中地名的完整指南 一、先明確:TIF 中的地名有哪兩種存在形式? 在開始提取前,需先判斷 TIF 文件的類型 —— ...
2025-09-17CDA 數(shù)據(jù)分析師:解鎖表結(jié)構(gòu)數(shù)據(jù)特征價(jià)值的專業(yè)核心 表結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 規(guī)范存儲(chǔ)的結(jié)構(gòu)化數(shù)據(jù),如數(shù)據(jù)庫表、Excel 表、 ...
2025-09-17Excel 導(dǎo)入數(shù)據(jù)含缺失值?詳解 dropna 函數(shù)的功能與實(shí)戰(zhàn)應(yīng)用 在用 Python(如 pandas 庫)處理 Excel 數(shù)據(jù)時(shí),“缺失值” 是高頻 ...
2025-09-16深入解析卡方檢驗(yàn)與 t 檢驗(yàn):差異、適用場景與實(shí)踐應(yīng)用 在數(shù)據(jù)分析與統(tǒng)計(jì)學(xué)領(lǐng)域,假設(shè)檢驗(yàn)是驗(yàn)證研究假設(shè)、判斷數(shù)據(jù)差異是否 “ ...
2025-09-16CDA 數(shù)據(jù)分析師:掌控表格結(jié)構(gòu)數(shù)據(jù)全功能周期的專業(yè)操盤手 表格結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 存儲(chǔ)的結(jié)構(gòu)化數(shù)據(jù),如 Excel 表、數(shù)據(jù) ...
2025-09-16MySQL 執(zhí)行計(jì)劃中 rows 數(shù)量的準(zhǔn)確性解析:原理、影響因素與優(yōu)化 在 MySQL SQL 調(diào)優(yōu)中,EXPLAIN執(zhí)行計(jì)劃是核心工具,而其中的row ...
2025-09-15解析 Python 中 Response 對(duì)象的 text 與 content:區(qū)別、場景與實(shí)踐指南 在 Python 進(jìn)行 HTTP 網(wǎng)絡(luò)請(qǐng)求開發(fā)時(shí)(如使用requests ...
2025-09-15CDA 數(shù)據(jù)分析師:激活表格結(jié)構(gòu)數(shù)據(jù)價(jià)值的核心操盤手 表格結(jié)構(gòu)數(shù)據(jù)(如 Excel 表格、數(shù)據(jù)庫表)是企業(yè)最基礎(chǔ)、最核心的數(shù)據(jù)形態(tài) ...
2025-09-15Python HTTP 請(qǐng)求工具對(duì)比:urllib.request 與 requests 的核心差異與選擇指南 在 Python 處理 HTTP 請(qǐng)求(如接口調(diào)用、數(shù)據(jù)爬取 ...
2025-09-12解決 pd.read_csv 讀取長浮點(diǎn)數(shù)據(jù)的科學(xué)計(jì)數(shù)法問題 為幫助 Python 數(shù)據(jù)從業(yè)者解決pd.read_csv讀取長浮點(diǎn)數(shù)據(jù)時(shí)的科學(xué)計(jì)數(shù)法問題 ...
2025-09-12CDA 數(shù)據(jù)分析師:業(yè)務(wù)數(shù)據(jù)分析步驟的落地者與價(jià)值優(yōu)化者 業(yè)務(wù)數(shù)據(jù)分析是企業(yè)解決日常運(yùn)營問題、提升執(zhí)行效率的核心手段,其價(jià)值 ...
2025-09-12用 SQL 驗(yàn)證業(yè)務(wù)邏輯:從規(guī)則拆解到數(shù)據(jù)把關(guān)的實(shí)戰(zhàn)指南 在業(yè)務(wù)系統(tǒng)落地過程中,“業(yè)務(wù)邏輯” 是連接 “需求設(shè)計(jì)” 與 “用戶體驗(yàn) ...
2025-09-11塔吉特百貨孕婦營銷案例:數(shù)據(jù)驅(qū)動(dòng)下的精準(zhǔn)零售革命與啟示 在零售行業(yè) “流量紅利見頂” 的當(dāng)下,精準(zhǔn)營銷成為企業(yè)突圍的核心方 ...
2025-09-11CDA 數(shù)據(jù)分析師與戰(zhàn)略 / 業(yè)務(wù)數(shù)據(jù)分析:概念辨析與協(xié)同價(jià)值 在數(shù)據(jù)驅(qū)動(dòng)決策的體系中,“戰(zhàn)略數(shù)據(jù)分析”“業(yè)務(wù)數(shù)據(jù)分析” 是企業(yè) ...
2025-09-11Excel 數(shù)據(jù)聚類分析:從操作實(shí)踐到業(yè)務(wù)價(jià)值挖掘 在數(shù)據(jù)分析場景中,聚類分析作為 “無監(jiān)督分組” 的核心工具,能從雜亂數(shù)據(jù)中挖 ...
2025-09-10統(tǒng)計(jì)模型的核心目的:從數(shù)據(jù)解讀到?jīng)Q策支撐的價(jià)值導(dǎo)向 統(tǒng)計(jì)模型作為數(shù)據(jù)分析的核心工具,并非簡單的 “公式堆砌”,而是圍繞特定 ...
2025-09-10