av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術文章
文章詳情頁

如何讓python的運行速度得到提升

瀏覽:3日期:2022-07-18 10:49:18

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

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

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

最原始的代碼:

import timedef 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 sprint(foo(1,100000000))

結果

Time used: 6.779874801635742 sec4999999950000000

是不是快了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 nbfrom 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 simport numpy as nparray = np.random.random(10000)%timeit sum1d(array)%timeit np.sum(array)%timeit sum(array)10000 loops, best of 3: 38.9 us per loop10000 loops, best of 3: 32.3 us per loop100 loops, best of 3: 12.4 ms per loop

numba中提供了一些修飾器,它們可以將其修飾的函數JIT編譯成機器碼函數,并返回一個可在Python中調用機器碼的包裝對象。為了能將Python函數編譯成能高速執行的機器碼,我們需要告訴JIT編譯器函數的各個參數和返回值的類型。我們可以通過多種方式指定類型信息,在上面的例子中,類型信息由一個字符串’f8(f8[:])’指定。其中’f8’表示8個字節雙精度浮點數,括號前面的’f8’表示返回值類型,括號里的表示參數類型,’[:]’表示一維數組。因此整個類型字符串表示sum1d()是一個參數為雙精度浮點數的一維數組,返回值是一個雙精度浮點數。

內容擴展:

Python運行速度提升

相比較C,C++,python一直被抱怨運行速度很慢,實際上python的執行效率并不慢,而是解釋器Cpython運行效率很差。

通過使用numba庫的jit可以讓python的運行速度提高百倍以上。

同諾簡單累加,相乘的例子,可以看出。

#!/usr/bin/env python# encoding: utf-8’’’@author: Victor@Company:華中科技大學電氣學院聚變與等離子研究所@version: V1.0@contact: 1650996069@qq.com 2018--2020@software: PyCharm2018@file: quickPython3.py@time: 2018/9/21 20:54@desc:使用numba的jit是python代碼運行速度提高100倍左右’’’’’’平常運行’’’import timedef add(x,y): tt = time.time() s = 0 for i in range(x,y):s += i print(’The time used: {} seconds’.format(time.time()-tt)) return s add(1,100000000)##########結果################ D:Python3python.exe D:/Pycharm2018Works/InsteringPython3/SomeBasics/quickPython3.py# The time used: 6.712835788726807 seconds# Process finished with exit code 0

’’’調用numba運行’’’import timefrom numba import jit@jitdef add(x,y): tt = time.time() s = 0 for i in range(x,y):s += i print(’The time used: {} seconds’.format(time.time()-tt)) return s add(1,100000000)##########結果################ D:Python3python.exe D:/Pycharm2018Works/InsteringPython3/SomeBasics/quickPython3.py# The time used: 0.06396007537841797 seconds# # Process finished with exit code 0

Numba模塊能夠將處理NumPy數組的Python函數JIT編譯為機器碼執行,從而上百倍的提高程序的運算速度。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 狠狠干狠狠插 | 国产极品在线观看 | 欧美激情在线观看 | 特黄aaaaaaaaa真人毛片 | 日韩欧美国产成人 | 免费在线观看黄色片 | 999国产视频 | 中文字幕一区二区三区视频 | 亚洲欧洲在线观看 | 欧美夜夜操 | 日韩一区二区在线观看视频 | 日韩亚洲欧美在线 | 伊人春色av | 国产日韩欧美日韩大片 | 成人特级毛片 | 中文字幕日韩一区 | 天堂中文在线视频 | 国产精品国产三级国产 | 日日日操| 日韩黄色免费视频 | 亚洲一区中文 | 亚洲欧美日韩国产精品 | 欧美人xxxx| 国产又粗又大又硬 | 日本不卡视频在线观看 | 成年免费视频黄网站在线观看 | 日韩专区中文字幕 | 国产资源视频 | 在线看的av | 亚洲免费精品 | 性视频在线 | 欧美在线综合 | 免费看黄色一级片 | 中文字幕精品在线观看 | 欧美在线综合 | 亚洲一区久久 | 99re视频 | 久久精品小视频 | 成人在线免费观看网站 | 人人草在线视频 | 成人免费在线播放 |