本篇內(nèi)容主要講解“Cython比Python快多少”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“Cython比Python快多少”吧!
創(chuàng)新互聯(lián)提供高防物理服務(wù)器租用、云服務(wù)器、香港服務(wù)器、托管服務(wù)器等
很多人僅在性能方面將Python與C進(jìn)行了比較,沒(méi)有在快速開(kāi)發(fā)方面比較,就開(kāi)始抱怨Python太慢了。Python的優(yōu)點(diǎn)在于,其開(kāi)發(fā)時(shí)間非常短,你不必處理指針、內(nèi)存管理等問(wèn)題。
多數(shù)情況下,開(kāi)發(fā)時(shí)間比性能更重要。Python有一個(gè)很棒的社區(qū),其中有很多很好的庫(kù),很多需求在那都能得到滿足。
話雖如此,如果想讓Python代碼更快該怎么做呢?來(lái)試試Cython吧!
Cython: Python的C擴(kuò)展
如果你同時(shí)喜歡Python的簡(jiǎn)單語(yǔ)法以及C的高性能,那么Cython就是你想要的。你可以使用Cython為Python編寫(xiě)C擴(kuò)展,其代碼將轉(zhuǎn)換為優(yōu)化的C / C ++代碼。它可以提供高性能,且能在Python項(xiàng)目中使用。
安裝Cython
這需要C編譯器,你可以根據(jù)自己的操作系統(tǒng)安裝一個(gè)C編譯器,然后需要使用如下命令安裝Cython:
pipinstall Cython
從靜態(tài)類型聲明中獲益
可以將靜態(tài)類型聲明添加到變量和函數(shù),它將提供更好的性能。你可以將所有C類型如int,float,double等用于聲明。
在Cython中聲明變量
cdef int i =10
這句命令的基本意思是聲明一個(gè)變量i,它是一個(gè)整數(shù)。
在Cython中聲明函數(shù)
cdef intsquare(int x): return x ** 2
該命令基本上意味著square函數(shù)采用整數(shù)x作為參數(shù)并返回整數(shù)值x ** 2,即x的平方。導(dǎo)入模塊時(shí),cdef聲明的函數(shù)對(duì)Python代碼不可見(jiàn)。為了使其可見(jiàn)需要改用cpdef。
在Python中計(jì)算階乘
編寫(xiě)一個(gè)Python函數(shù)來(lái)計(jì)算給定整數(shù)的階乘:
effactorial(n): if n >=1: return n *factorial(n -1) return1
使用Cython讓Python更快
首先,要?jiǎng)?chuàng)建一個(gè)pyx文件。
cpdef longfastfactorial:此函數(shù)將返回一個(gè)long值,因此我們通過(guò)在函數(shù)名fastfactorial之前放置long來(lái)聲明它的類型為long。
long n:我們預(yù)期n為long值。
cpdef long fastfactorial(long n): if n >=1: return n * fastfactorial(n-1) return1
接著,我們需要?jiǎng)?chuàng)建一個(gè)setup.py文件來(lái)將Cython轉(zhuǎn)換為C。
from distutils.core import setup fromCython.Buildimport cythonize setup(ext_modules =cythonize('fastfac.pyx'))
編譯代碼
為執(zhí)行編譯,需要運(yùn)行以下命令:
python3setup.py build_ext –inplace
--inplace:此選項(xiàng)會(huì)在你的工作目錄中創(chuàng)建一個(gè)共享對(duì)象文件。
對(duì)比
讓我們比較一下二者:
from fastfac import fastfactorial from fac import factorial from timeit import timeit print(timeit('fastfactorial(20)', globalsglobals=globals(), number=10000)) #output: 0.002164322999306023 print(timeit('factorial(20)', globalsglobals=globals(), number=10000)) #output: 0.18900858898996376
結(jié)果驚人,Cython快將近88倍!
到此,相信大家對(duì)“Cython比Python快多少”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
名稱欄目:Cython比Python快多少
網(wǎng)頁(yè)地址:http://jinyejixie.com/article30/ppidso.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、品牌網(wǎng)站設(shè)計(jì)、動(dòng)態(tài)網(wǎng)站、服務(wù)器托管、做網(wǎng)站、自適應(yīng)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)