網站首頁 編程語言 正文
python的一個加速器包,這里不講原理,只講應用過程,以及給出幾個小例子,直接寫就行了; 另外還給出了numba如何定義使用List
1、最簡單的使用
當輸出返回值為整數或浮點數時:
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自動更改加速模式,也就是使用nopython。
上述代碼等價于:
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、進階
當輸出返回值為“不同類型值”時:
裝飾器使用: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))
當進行矩陣或向量運算時:
使用裝飾器:vectorize
from numba import vectorize, float64
import numpy as np
@vectorize([float64(float64, float64)]) ?# 注意有中括號
def f(x, y):
? ? return x + y
if __name__ == '__main__':
? ? a = np.array([1,2])
? ? b = np.array([2,2])
? ? print(f(a,b))
補充
在numba內定義列表:
import numpy as np
import time
NUM = 160
from numba import jit
from numba.typed import List
a = List()
a.append(1) # 同樣需要指定數據類型,塞個1,數據類型就是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)
原文鏈接:https://blog.csdn.net/qq_24211837/article/details/124520545
相關推薦
- 2022-10-30 SwiftUI?List在MacOS中的性能優化示例_Swift
- 2022-09-17 C++中cin的返回值問題_C 語言
- 2024-03-24 golang log包自定義輸出日志格式與寫入到文件
- 2022-10-05 Flutter列表滾動定位超強輔助庫使用示例詳解_IOS
- 2022-06-09 FreeRTOS實時操作系統的任務通知方法_操作系統
- 2022-07-19 react Context的基本使用( react跨組件傳遞數據 )
- 2023-01-11 基于Qt播放器的實現詳解(支持Rgb,YUV格式)_C 語言
- 2022-06-25 Android開發壁紙的驗證設置和確認功能實現demo_Android
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支