日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

智慧交通day01-算法库01:numba

發(fā)布時(shí)間:2024/7/5 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 智慧交通day01-算法库01:numba 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1 numba介紹

numba是一個(gè)用于編譯Python數(shù)組和數(shù)值計(jì)算函數(shù)的編譯器,這個(gè)編譯器能夠大幅提高直接使用Python編寫的函數(shù)的運(yùn)算速度。

numba使用LLVM編譯器架構(gòu)將純Python代碼生成優(yōu)化過的機(jī)器碼,通過一些添加簡(jiǎn)單的注解,將面向數(shù)組和使用大量數(shù)學(xué)的python代碼優(yōu)化到與c,c++和Fortran類似的性能,而無需改變Python的解釋器。numba的編譯方式如下圖所示:

?為什么選擇numba?

選擇Numbade 原因很簡(jiǎn)單,不需要為了獲得一些的加速來改變代碼,我們只需要添加一個(gè)裝飾器到Python函數(shù)中即可完成加速,而且加速效果與cython代碼相當(dāng)。

2.numba的使用方法

numba對(duì)代碼進(jìn)行加速時(shí),給要優(yōu)化的函數(shù)加上@jit優(yōu)化器即可。使用jit的時(shí)候可以讓numba來決定什么時(shí)候以及怎么做優(yōu)化。如下簡(jiǎn)單的例子所示:

from numba import jit @jit def f(x, y):return x + y

這段代碼的計(jì)算在被調(diào)用是第一次執(zhí)行,numba將在調(diào)用期間推斷參數(shù)類型,然后基于這個(gè)信息生成優(yōu)化后的代碼。numba也能夠基于輸入的類型編譯生成特定的代碼。例如,對(duì)于上面的代碼,傳入整數(shù)和浮點(diǎn)數(shù)作為參數(shù)將會(huì)生成不同的代碼:

?Numba編譯的函數(shù)可以調(diào)用其他編譯函數(shù)。 例如:

@jit def hypot(x, y):return math.sqrt(square(x) + square(y))

我們現(xiàn)在看一個(gè)例子:

from numba import jit import time @jit def foo():x = []for a in range(100000000):x.append(a)def foo_withoutfit():y = [] for b in range(100000000):y.append(b)

現(xiàn)在我們定義相同的方法,實(shí)現(xiàn)的功能也是一樣的,一個(gè)是利用numba進(jìn)行加速,一個(gè)沒有加速,我們看下他們的運(yùn)行時(shí)間:

?從結(jié)果中可以看出,當(dāng)我們使用了numba進(jìn)行加速,速度提升了10倍以上。


總結(jié)

  • numba是進(jìn)行python加速的工具包
  • 在要進(jìn)行加速的python函數(shù)中添加裝飾器@jit即可實(shí)現(xiàn)代碼的加速
  • 總結(jié)

    以上是生活随笔為你收集整理的智慧交通day01-算法库01:numba的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。