最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

通過numba模塊給Python代碼提速的方法詳解

 更新時間:2022年01月13日 10:42:58   作者:三爺帶你飛  
numba是Anaconda公司開發(fā)的針對Python的開源JIT編譯器,用于提供Python版CPU和GPU編程,速度比原生Python快數(shù)十倍。本文將詳細介紹一下numba是如何實現(xiàn)代碼提速的,需要的可以參考一下

簡介:numba是Anaconda公司開發(fā)的針對Python的開源JIT編譯器,用于提供Python版CPU和GPU編程,速度比原生Python快數(shù)十倍。numba是第三方庫,可以在運行時將Python代碼編譯為本地機器指令,而不會強制大幅度的改變普通的Python代碼,使得在部分場景下執(zhí)行Python的效率得到飛速的提升。

工作原理對比:

Python文件執(zhí)行過程

1、.py文件通過解釋器轉化為虛擬機可以執(zhí)行的字節(jié)碼(.pyc);字節(jié)碼在虛擬機上執(zhí)行,得到結果。

2、字節(jié)碼是一種只能運行在虛擬機上的文件,默認后綴.pyc,Python生成.pyc之后一般放在內(nèi)存中繼續(xù)使用,并不是每次都將.pyc文件保存到磁盤上。

而在JIT(Just-In-Time)技術中,JIT編譯器將Python源代碼.py直接編譯成機器可以執(zhí)行的機器語言(機器碼),就可以直接在CPU等硬件上運行。這樣,JIT就跳過了原來的虛擬機,執(zhí)行速度幾乎與用C語言編程速度無差別。

numba是Anaconda公司開發(fā)的針對Python的開源JIT編譯器。谷歌開源的jax庫也是屬于jit編譯器之一,該模塊則主要應用于科學計算和機器學習方向。

安裝:如網(wǎng)絡限制,請繞道國內(nèi)鏡像豆瓣源,清華源等。pip安裝第三方庫全攻略:普通安裝、安裝whl后綴文件、使用國內(nèi)鏡像安裝

pip install numba

使用方法:

from numba import jit
對函數(shù)進行裝飾@jit(nopython=True)

注意事項:numba只符合部分場景,特殊場景無法使用。例如機器學習訓練數(shù)據(jù)時,不能簡單的進行裝飾使用,否則會拋出異常。

源碼:

from numba import jit
import datetime


def calc_sum1(loop):
? ? n = 0
? ? for i in range(loop):
? ? ? ? for j in range(loop):
? ? ? ? ? ? n += j
? ? return n


@jit(nopython=True)
def calc_sum2(loop):
? ? n = 0
? ? for i in range(loop):
? ? ? ? for j in range(loop):
? ? ? ? ? ? n += j
? ? return n


@jit(nopython=True)
def calc_sum2(loop):
? ? n = 0
? ? for i in range(loop):
? ? ? ? for j in range(loop):
? ? ? ? ? ? n += j
? ? return n


if __name__ == '__main__':
? ? print(datetime.datetime.now())
? ? r1 = calc_sum1(10000)
? ? print(r1)
? ? print(datetime.datetime.now())

? ? print("*" * 30)
? ? print(datetime.datetime.now())
? ? r2 = calc_sum2(10000)
? ? print(r2)
? ? print(datetime.datetime.now())

結果對比:原始代碼執(zhí)行需要花費5秒左右,而使用numba裝飾后僅需300毫秒左右,提升10倍有余。如果loop設置的參數(shù)更長,numba裝飾后執(zhí)行的結果更佳。

到此這篇關于通過numba模塊給Python代碼提速的方法詳解的文章就介紹到這了,更多相關Python numba代碼提速內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python+OpenCV檢測燈光亮點的實現(xiàn)方法

    Python+OpenCV檢測燈光亮點的實現(xiàn)方法

    這篇文章主要介紹了Python+OpenCV檢測燈光亮點的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • Django中使用Celery的方法步驟

    Django中使用Celery的方法步驟

    這篇文章主要介紹了Django中使用Celery,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • Vs Code中8個好用的python 擴展插件

    Vs Code中8個好用的python 擴展插件

    這篇文章主要介紹了Vs Code中8個好用的python 擴展插件,幫助大家更好的利用vs code進行python開發(fā),感興趣的朋友可以了解下
    2020-10-10
  • 通過實例解析python and和or使用方法

    通過實例解析python and和or使用方法

    這篇文章主要介紹了通過實例解析python and和or使用方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-11-11
  • python 通過類中一個方法獲取另一個方法變量的實例

    python 通過類中一個方法獲取另一個方法變量的實例

    今天小編就為大家分享一篇python 通過類中一個方法獲取另一個方法變量的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Matplotlib直方圖繪制中的參數(shù)bins和rwidth的實現(xiàn)

    Matplotlib直方圖繪制中的參數(shù)bins和rwidth的實現(xiàn)

    本文主要介紹了Matplotlib直方圖繪制中的參數(shù)bins和rwidth的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-02-02
  • Python生成密碼庫功能示例

    Python生成密碼庫功能示例

    這篇文章主要介紹了Python生成密碼庫功能,涉及Python基于隨機字符串實現(xiàn)的生成密碼功能相關操作技巧,需要的朋友可以參考下
    2017-05-05
  • 深入理解Python中的函數(shù)參數(shù)傳遞機制

    深入理解Python中的函數(shù)參數(shù)傳遞機制

    在Python中,對于函數(shù)的參數(shù)傳遞,有兩種主要的方式:傳值和傳引用。事實上,Python的參數(shù)傳遞是一種“傳對象引用”的方式,本文呢我們將詳細介紹Python的函數(shù)參數(shù)傳遞機制,這對理解Python編程語言的底層實現(xiàn)以及優(yōu)化你的代碼都非常有幫助
    2023-07-07
  • Python 數(shù)據(jù)結構之旋轉鏈表

    Python 數(shù)據(jù)結構之旋轉鏈表

    這篇文章主要介紹了Python 數(shù)據(jù)結構之旋轉鏈表的相關資料,需要的朋友可以參考下
    2017-02-02
  • Python編寫生成驗證碼的腳本的教程

    Python編寫生成驗證碼的腳本的教程

    這篇文章主要介紹了Python編寫生成驗證碼的腳本的教程,驗證碼在web編程中幾乎是必備的功能,需要的朋友可以參考下
    2015-05-05

最新評論

临夏县| 双辽市| 莱州市| 霍州市| 开原市| 榆林市| 大新县| 鄂尔多斯市| 顺平县| 武隆县| 思茅市| 伊金霍洛旗| 交城县| 锡林郭勒盟| 封丘县| 钟祥市| 仁布县| 尼玛县| 东乌珠穆沁旗| 遂溪县| 德江县| 大化| 富川| 石柱| 汉中市| 丹凤县| 临桂县| 金乡县| 新密市| 安溪县| 丰宁| 赤壁市| 正定县| 天柱县| 乐安县| 鄂尔多斯市| 海安县| 墨玉县| 忻城县| 颍上县| 思南县|