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

溫馨提示×

溫馨提示×

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

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

提升python運行速度的有效方式

發布時間:2020-07-27 11:13:31 來源:億速云 閱讀:201 作者:清晨 欄目:編程語言

這篇文章主要介紹提升python運行速度的有效方式,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

python一直被病垢運行速度太慢,但是實際上python的執行效率并不慢,慢的是python用的解釋器Cpython運行效率太差。

“一行代碼讓python的運行速度提高100倍”這絕不是嘩眾取寵的論調。

我們來看一下這個最簡單的例子,從1一直累加到1億。

最原始的代碼:

import time
def foo(x,y):
  tt = time.time()
  s = 0
  for i in range(x,y):
    s += i
  print('Time used: {} sec'.format(time.time()-tt))
  return s
print(foo(1,100000000))

結果

Time used: 6.779874801635742 sec
4999999950000000

是不是快了100多倍呢?

那么下面就分享一下“為啥numba庫的jit模塊那么牛掰?”

NumPy的創始人Travis Oliphant在離開Enthought之后,創建了CONTINUUM,致力于將Python大數據處理方面的應用。最近推出的Numba項目能夠將處理NumPy數組的Python函數JIT編譯為機器碼執行,從而上百倍的提高程序的運算速度。

Numba項目的主頁上有Linux下的詳細安裝步驟。編譯LLVM需要花一些時間。

Windows用戶可以從Unofficial Windows Binaries for Python Extension Packages下載安裝LLVMPy、meta和numba等幾個擴展庫。

下面我們看一個例子:

import numba as nb
from numba import jit
@jit('f8(f8[:])')
def sum1d(array):
 s = 0.0
 n = array.shape[0]
 for i in range(n):
  s += array[i]
 return s
import numpy as np
array = np.random.random(10000)
%timeit sum1d(array)
%timeit np.sum(array)
%timeit sum(array)
10000 loops, best of 3: 38.9 us per loop
10000 loops, best of 3: 32.3 us per loop
100 loops, best of 3: 12.4 ms per loop

numba中提供了一些修飾器,它們可以將其修飾的函數JIT編譯成機器碼函數,并返回一個可在Python中調用機器碼的包裝對象。為了能

將Python函數編譯成能高速執行的機器碼,我們需要告訴JIT編譯器函數的各個參數和返回值的類型。我們可以通過多種方式指定類型信

息,在上面的例子中,類型信息由一個字符串'f8(f8[:])'指定。其中'f8'表示8個字節雙精度浮點數,括號前面的'f8'表示返回值類型,括號

里的表示參數類型,'[:]'表示一維數組。因此整個類型字符串表示sum1d()是一個參數為雙精度浮點數的一維數組,返回值是一個雙精度

浮點數。

以上是提升python運行速度的有效方式的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

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

AI

肇州县| 东乌珠穆沁旗| 朝阳市| 岳普湖县| 祁东县| 荆门市| 东台市| 通许县| 石城县| 肃南| 来宾市| 南安市| 康保县| 茂名市| 纳雍县| 佛教| 灵石县| 万年县| 新竹县| 汾西县| 西峡县| 灵璧县| 林州市| 新密市| 罗源县| 瓦房店市| 四平市| 西盟| 武鸣县| 山东省| 张家口市| 都昌县| 乌海市| 若羌县| 卫辉市| 莲花县| 丽江市| 保靖县| 通州区| 铜鼓县| 萨迦县|