中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何通過numba模塊給Python代碼提速

發布時間:2022-01-13 12:58:31 來源:億速云 閱讀:134 作者:小新 欄目:開發技術

這篇文章將為大家詳細講解有關如何通過numba模塊給Python代碼提速,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

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

工作原理對比:

Python文件執行過程

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

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

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

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

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

pip install numba

使用方法:

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

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

如何通過numba模塊給Python代碼提速

源碼:

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())

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

如何通過numba模塊給Python代碼提速

關于“如何通過numba模塊給Python代碼提速”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

盘山县| 湘阴县| 福鼎市| 井研县| 怀集县| 上高县| 武夷山市| 普安县| 湘乡市| 皮山县| 宜宾县| 连平县| 康平县| 惠水县| 青河县| 芜湖市| 镇江市| 泾阳县| 龙岩市| 始兴县| 铜梁县| 阿克陶县| 石林| 额济纳旗| 漳州市| 吉林省| 林甸县| 兴化市| 广西| 宁南县| 光山县| 长春市| 元江| 铅山县| 富蕴县| 浦县| 阿荣旗| 新兴县| 黄浦区| 夏津县| 囊谦县|