python如何提高運行速度

(*-*)浩
發布: 2019-06-18 11:51:42
原創
8385 人瀏覽過

說現在最流行的語言,就不得不提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中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!