欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Cython比Python快多少

本篇內容主要講解“Cython比Python快多少”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Cython比Python快多少”吧!

創(chuàng)新互聯(lián)提供高防物理服務器租用、云服務器、香港服務器、托管服務器

很多人僅在性能方面將Python與C進行了比較,沒有在快速開發(fā)方面比較,就開始抱怨Python太慢了。Python的優(yōu)點在于,其開發(fā)時間非常短,你不必處理指針、內存管理等問題。

多數(shù)情況下,開發(fā)時間比性能更重要。Python有一個很棒的社區(qū),其中有很多很好的庫,很多需求在那都能得到滿足。

話雖如此,如果想讓Python代碼更快該怎么做呢?來試試Cython吧!

Cython: Python的C擴展

如果你同時喜歡Python的簡單語法以及C的高性能,那么Cython就是你想要的。你可以使用Cython為Python編寫C擴展,其代碼將轉換為優(yōu)化的C  / C ++代碼。它可以提供高性能,且能在Python項目中使用。

安裝Cython

這需要C編譯器,你可以根據(jù)自己的操作系統(tǒng)安裝一個C編譯器,然后需要使用如下命令安裝Cython:

pipinstall Cython

從靜態(tài)類型聲明中獲益

可以將靜態(tài)類型聲明添加到變量和函數(shù),它將提供更好的性能。你可以將所有C類型如int,float,double等用于聲明。

在Cython中聲明變量

cdef int i =10

這句命令的基本意思是聲明一個變量i,它是一個整數(shù)。

在Cython中聲明函數(shù)

cdef intsquare(int x):     return x ** 2

該命令基本上意味著square函數(shù)采用整數(shù)x作為參數(shù)并返回整數(shù)值x **  2,即x的平方。導入模塊時,cdef聲明的函數(shù)對Python代碼不可見。為了使其可見需要改用cpdef。

在Python中計算階乘

編寫一個Python函數(shù)來計算給定整數(shù)的階乘:

effactorial(n):                        if  n >=1:                            return n *factorial(n -1)                        return1

使用Cython讓Python更快

首先,要創(chuàng)建一個pyx文件。

cpdef  longfastfactorial:此函數(shù)將返回一個long值,因此我們通過在函數(shù)名fastfactorial之前放置long來聲明它的類型為long。

long n:我們預期n為long值。

cpdef long fastfactorial(long n):                                 if  n >=1:                                     return n * fastfactorial(n-1)                                 return1

接著,我們需要創(chuàng)建一個setup.py文件來將Cython轉換為C。

from distutils.core import setup                      fromCython.Buildimport cythonize                      setup(ext_modules =cythonize('fastfac.pyx'))

編譯代碼

為執(zhí)行編譯,需要運行以下命令:

python3setup.py build_ext –inplace

--inplace:此選項會在你的工作目錄中創(chuàng)建一個共享對象文件。

對比

讓我們比較一下二者:

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

結果驚人,Cython快將近88倍!

到此,相信大家對“Cython比Python快多少”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續(xù)學習!

名稱欄目:Cython比Python快多少
網(wǎng)頁地址:http://chinadenli.net/article30/ppidso.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供響應式網(wǎng)站品牌網(wǎng)站設計動態(tài)網(wǎng)站服務器托管做網(wǎng)站自適應網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運營