91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

如何通過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

澄江县| 阳新县| 黄龙县| 旬邑县| 桐乡市| 定远县| 嫩江县| 商都县| 华蓥市| 重庆市| 资中县| 杭州市| 天峻县| 即墨市| 临城县| 剑河县| 额济纳旗| 昔阳县| 环江| 苍溪县| 凉城县| 太康县| 易门县| 巴林左旗| 公安县| 湄潭县| 靖安县| 依兰县| 永登县| 家居| 启东市| 滕州市| 闽侯县| 宿迁市| 凤庆县| 兰坪| 华池县| 通城县| 南通市| 海晏县| 扶沟县|