溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

10分鐘帶你入門Cython

發(fā)布時(shí)間:2020-07-14 07:58:51 來(lái)源:網(wǎng)絡(luò) 閱讀:1779 作者:Python熱愛者 欄目:編程語(yǔ)言

1. Cython是什么?

Cython是一個(gè)編程語(yǔ)言,它通過(guò)類似Python的語(yǔ)法來(lái)編寫C擴(kuò)展并可以被Python調(diào)用.既具備了Python快速開發(fā)的特點(diǎn),又可以讓代碼運(yùn)行起來(lái)像C一樣快,同時(shí)還可以方便地調(diào)用C library。

2. 如何安裝Cython?

跟大多數(shù)的Python庫(kù)不同,Cython需要一個(gè)C編譯器,在不同的平臺(tái)上配置方法也不一樣。

2.1 配置gcc

windows

安裝MingW-w64編譯器:

conda install libpython m2w64-toolchain -c msys2

在Python安裝路徑下找到\Lib\distutils文件夾,創(chuàng)建distutils.cfg寫入如下內(nèi)容:

macOS

安裝XCode即可

linux:gcc一般都是配置好的,如果沒有就執(zhí)行這條命令:

sudo apt-get install build-essential

2.2 安裝cython庫(kù)

如果沒安裝Anaconda:?pip install cython

如果安裝了Anaconda:?conda install cython

3. 在Jupyter Notebook上使用Cython

首先加載Cython擴(kuò)展,使用魔術(shù)命令?%load_ext Cython

接下來(lái)運(yùn)行Cython代碼,使用魔術(shù)命令?%%cython


10分鐘帶你入門Cython

4. 試試Cython到底有多快

常規(guī)Python函數(shù),運(yùn)行時(shí)間559 ns

Cython def函數(shù),聲明一個(gè)Python函數(shù),既可以在模塊內(nèi)調(diào)用,也可以在模塊外調(diào)用。模塊內(nèi)運(yùn)行時(shí)間524.2 ns,模塊外運(yùn)行時(shí)間512 ns

Cython cpdef函數(shù),聲明一個(gè)C函數(shù)和一個(gè)Python wrapper,在模塊內(nèi)被當(dāng)做C函數(shù)調(diào)用,在模塊外被.py文件當(dāng)做Python函數(shù)調(diào)用。模塊內(nèi)運(yùn)行時(shí)間43.7 ns,模塊外運(yùn)行時(shí)間81.7 ns

Cython cdef函數(shù),聲明一個(gè)C函數(shù),不可以在模塊外被Python調(diào)用。模塊內(nèi)運(yùn)行時(shí)間34.8 ns

4.1 常規(guī)Python函數(shù)

10分鐘帶你入門Cython

4.2 Cython def函數(shù)


10分鐘帶你入門Cython

4.3 Cython cpdef函數(shù)


10分鐘帶你入門Cython

4.4 Cython cdef函數(shù)

10分鐘帶你入門Cython

5. 在Cython中使用Python對(duì)象

常規(guī)Python函數(shù),運(yùn)行時(shí)間549微秒

Python內(nèi)置函數(shù),運(yùn)行時(shí)間104微秒

Cython函數(shù),運(yùn)行時(shí)間51.6微秒

A?=?list(range(10000))

5.1 常規(guī)Python函數(shù)


10分鐘帶你入門Cython

5.2 Python內(nèi)置函數(shù)

%timeit?sum(A)

5.3 Cython函數(shù)


10分鐘帶你入門Cython

6. 在.pyx文件中使用Cython

建立名為example.pyx的文件,鍵入如下代碼

在控制臺(tái)使用cythonize命令,將.pyx文件轉(zhuǎn)為.c文件再編譯為C模塊


10分鐘帶你入門Cython


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI