python加速器numba使用詳解
python的一個(gè)加速器包,這里不講原理,只講應(yīng)用過程,以及給出幾個(gè)小例子,直接寫就行了; 另外還給出了numba如何定義使用List
1、最簡(jiǎn)單的使用
當(dāng)輸出返回值為整數(shù)或浮點(diǎn)數(shù)時(shí):
from numba import jit @jit(nopython=True) def f(x, y): ? ? return x+y if __name__ == '__main__': ? ? a = 1 ? ? b = 1 ? ? print(f(a,b))
解釋:
使用裝飾器,另外,nopython=True是防止numba自動(dòng)更改加速模式,也就是使用nopython。
上述代碼等價(jià)于:
from numba import njit @njit ?# 也就是jit(nopython=True) def f(x, y): ? ? return x+y if __name__ == '__main__': ? ? a = 1 ? ? b = 1 ? ? print(f(a,b))
2、進(jìn)階
當(dāng)輸出返回值為“不同類型值”時(shí):
裝飾器使用:generated_jit
from numba import generated_jit, typed @generated_jit(nopython=True) def f2(x): ? ? if x==1: ? ? ? ? return lambda x: x+1 ? ? else: ? ? ? ? return lambda x: [1,2] if __name__ == '__main__': ? ? a = 1 ? ? print(f2(a))
當(dāng)進(jìn)行矩陣或向量運(yùn)算時(shí):
使用裝飾器:vectorize
from numba import vectorize, float64 import numpy as np @vectorize([float64(float64, float64)]) ?# 注意有中括號(hào) def f(x, y): ? ? return x + y if __name__ == '__main__': ? ? a = np.array([1,2]) ? ? b = np.array([2,2]) ? ? print(f(a,b))
補(bǔ)充
在numba內(nèi)定義列表:
import numpy as np import time NUM = 160 from numba import jit from numba.typed import List a = List() a.append(1) # 同樣需要指定數(shù)據(jù)類型,塞個(gè)1,數(shù)據(jù)類型就是int @jit(nopython=True) def f(a): ? ? for i in range(NUM): ? ? ? ? a.append(i) if __name__ == '__main__': ? ?for i in range(5): ? ? start = time.time() ? ? f(a) ? ? print(time.time()-start)
到此這篇關(guān)于python加速器numba使用詳解的文章就介紹到這了,更多相關(guān)python加速器numba內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
淺談Python生成器generator之next和send的運(yùn)行流程(詳解)
下面小編就為大家?guī)硪黄獪\談Python生成器generator之next和send的運(yùn)行流程(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-05-05
python對(duì)象及面向?qū)ο蠹夹g(shù)詳解
這篇文章主要介紹了python對(duì)象及面向?qū)ο蠹夹g(shù),結(jié)合實(shí)例形式詳細(xì)分析了Python面向?qū)ο笏婕暗念?、?duì)象、方法、屬性等概念與使用技巧,需要的朋友可以參考下2016-07-07
Python使用Flask-SQLAlchemy連接數(shù)據(jù)庫操作示例
這篇文章主要介紹了Python使用Flask-SQLAlchemy連接數(shù)據(jù)庫操作,簡(jiǎn)單介紹了flask、Mysql-Python以及Flask-SQLAlchemy的安裝方法,并結(jié)合實(shí)例形式分析了基于Flask-SQLAlchemy的數(shù)據(jù)庫連接相關(guān)操作技巧,需要的朋友可以參考下2018-08-08
一文詳解Python三引號(hào)(“““)的五個(gè)神奇用法
今天我們來聊一聊 Python 中的一個(gè)神奇字符——三引號(hào)("""),三引號(hào)"""不僅僅是用來定義多行字符串的簡(jiǎn)單工具,它還隱藏著許多令人驚嘆的用途,感興趣的小伙伴跟著小編一起來看看吧2025-04-04
NCCL深度學(xué)習(xí)Bootstrap網(wǎng)絡(luò)連接建立源碼解析
這篇文章主要為大家介紹了NCCL深度學(xué)習(xí)Bootstrap網(wǎng)絡(luò)連接建立源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04
Python技巧之變長(zhǎng)和定長(zhǎng)序列拆分
這篇文章主要給大家分享的是Python技巧之變長(zhǎng)和定長(zhǎng)序列拆分,Python中的任何序列(可迭代的對(duì)象)都可以通過賦值操作進(jìn)行拆分,包括但不限于元組、列表、字符串、文件、迭代器、生成器等。想了解更多詳細(xì)的小伙伴請(qǐng)參考下面文章內(nèi)容2021-12-12

