您好,登錄后才能下訂單哦!
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
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ù)
4.2 Cython def函數(shù)
4.3 Cython cpdef函數(shù)
4.4 Cython cdef函數(shù)
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ù)
5.2 Python內(nèi)置函數(shù)
%timeit?sum(A)
5.3 Cython函數(shù)
6. 在.pyx文件中使用Cython
建立名為example.pyx的文件,鍵入如下代碼
在控制臺(tái)使用cythonize命令,將.pyx文件轉(zhuǎn)為.c文件再編譯為C模塊
免責(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)容。