基于Numba提高python運(yùn)行效率過(guò)程解析
Numba是Python的即時(shí)編譯器,在使用NumPy數(shù)組和函數(shù)以及循環(huán)的代碼上效果最佳。使用Numba的最常見(jiàn)方法是通過(guò)其裝飾器集合,這些裝飾器可應(yīng)用于您的函數(shù)以指示Numba對(duì)其進(jìn)行編譯。調(diào)用Numba裝飾函數(shù)時(shí),它會(huì)被“即時(shí)”編譯為機(jī)器代碼以執(zhí)行,并且您的全部或部分代碼隨后可以本機(jī)機(jī)器速度運(yùn)行!
安裝numba(我在這里加了--default-timeout=10000,防止安裝時(shí)出現(xiàn)timeout的錯(cuò)誤)
pip --default-timeout=10000 install -U numba
from numba import jitimport timedef add(x): he=0 for i in range(x): he+=i return hestart=time.time()res=add(100000000)print(res)end=time.time()print(end-start)
耗時(shí)5s49999999500000005.707650184631348
使用Numba的JIT裝飾器@jit,以嘗試加快某些功能的運(yùn)行速度
from numba import jitimport time@jitdef add(x): he=0 for i in range(x): he+=i return hestart=time.time()res=add(100000000)print(res)end=time.time()print(end-start)
耗時(shí)0.14s,快了近40倍49999999500000000.14488554000854492
看吧,快了40倍!
numba僅對(duì)numpy,for和while循環(huán)有效!
參考numba官網(wǎng):http://numba.pydata.org/numba-doc/latest/developer/inlining.html#example-using-numba-jit
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:

網(wǎng)公網(wǎng)安備