首頁  >  文章  >  後端開發  >  python如何提高運行速度

python如何提高運行速度

(*-*)浩
(*-*)浩原創
2019-06-15 16:34:508350瀏覽

說現在最流行的語言,就不得不提python。但python雖然容易上手,但速度卻有點感人。如何用簡單的方法讓python加速到近乎可以媲美C的速度呢?

python如何提高運行速度

今天來就來談談numba這個寶貝。對你沒看錯,不是numpy,就是numba。 (推薦學習:Python影片教學

numba是Python的即時編譯器,它最適用於使用NumPy陣列和函數以及循環的程式碼。使用Numba的最常用方法是透過其裝飾器集合,可以應用於您的函數來指示Numba編譯它們。當呼叫Numba修飾函數時,它被編譯為機器碼「及時」執行,並且您的全部或部分程式碼隨後可以以本機機器碼速度運行!

在面對一個計算project的時候,我們最容易想到的就是直接碼程式碼,最後寫出一個超長的程式。這樣一來,一旦出錯往往需要花很多時間定位問題。

有一個簡單的辦法解決這個問題,就是定義各種各樣的函數,把任務分解成很多小部分。因為每個函數都不是特別複雜,並且在寫好的時候就可以隨時檢查,因此簡潔的主程式一旦出問題就很容易定位並解決。物件導向程式設計的想法就是基於函數。

寫好函數之後,也可以使用裝飾器(decorator)讓它變得強大。裝飾器本身就是一個函數,不過是函數的函數,目的是增加函數的功能。例如先定義一個輸出目前時間的函數,再定義一個規定時間格式的函數,把後一個函數作用在前一個函數上,就是一個裝飾器,作用是用特定格式輸出當前時間。

>Numba的優點

1.簡單,往往只要1行程式碼就有驚喜;

2.對循環(loop)有奇效,而往往在科學計算中限制python速度的就是loop;

3.相容常用的科學計算包,如numpy、cmath等;

4.可以創建ufunc;

5.會自動調整精度,確保準確性。

如何使用numba

針對上述的numba的優勢,我來進行逐一介紹。先導入numba

import numba as nb

只用1行程式碼即可加速,對loop有奇效

因為numba內建的函數本身就是裝飾器,所以只要在自己定義好的函數前面加個@nb.jit()就行,簡單上手。以下以一個求和函數為例​​

# 用numba加速的求和函数@nb.jit()def nb_sum(a):
    Sum = 0
    for i in range(len(a)):
        Sum += a[i]
    return Sum# 没用numba加速的求和函数def py_sum(a):
    Sum = 0
    for i in range(len(a)):
        Sum += a[i]
    return Sum

來測試一下速度

import numpy as np
a = np.linspace(0,100,100) # 创建一个长度为100的数组

%timeit np.sum(a) # numpy自带的求和函数
%timeit sum(a) # python自带的求和函数
%timeit nb_sum(a) # numba加速的求和函数
%timeit py_sum(a) # 没加速的求和函数

更多Python相關技術文章,請造訪Python教學欄位進行學習!

以上是python如何提高運行速度的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn