10分鐘帶你入門Cython

1. Cython是什麼?

Cython是一個編程語言,它通過類似Python的語法來編寫C擴展並可以被Python調用.既具備了Python快速開發的特點,又可以讓代碼運行起來像C一樣快,同時還可以方便地調用C library。

2. 如何安裝Cython?

跟大多數的Python庫不同,Cython需要一個C編譯器,在不同的平臺上配置方法也不一樣。

2.1 配置gcc

windows

安裝MingW-w64編譯器:

conda install libpython m2w64-toolchain -c msys2

在Python安裝路徑下找到\Lib\distutils文件夾,創建distutils.cfg寫入如下內容:

macOS

安裝XCode即可

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

sudo apt-get install build-essential

2.2 安裝cython庫

如果沒安裝Anaconda: pip install cython

如果安裝了Anaconda: conda install cython

3. 在Jupyter Notebook上使用Cython

首先加載Cython擴展,使用魔術命令 %load_ext Cython

接下來運行Cython代碼,使用魔術命令 %%cython


1240

4. 試試Cython到底有多快

常規Python函數,運行時間559 ns

Cython def函數,聲明一個Python函數,既可以在模塊內調用,也可以在模塊外調用。模塊內運行時間524.2 ns,模塊外運行時間512 ns

Cython cpdef函數,聲明一個C函數和一個Python wrapper,在模塊內被當做C函數調用,在模塊外被.py文件當做Python函數調用。模塊內運行時間43.7 ns,模塊外運行時間81.7 ns

Cython cdef函數,聲明一個C函數,不可以在模塊外被Python調用。模塊內運行時間34.8 ns

4.1 常規Python函數

1240

4.2 Cython def函數


1240

4.3 Cython cpdef函數


1240

4.4 Cython cdef函數

1240

5. 在Cython中使用Python對象

常規Python函數,運行時間549微秒

Python內置函數,運行時間104微秒

Cython函數,運行時間51.6微秒

A = list(range(10000))

5.1 常規Python函數


1240

5.2 Python內置函數

%timeit sum(A)

5.3 Cython函數


1240

6. 在.pyx文件中使用Cython

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

在控制檯使用cythonize命令,將.pyx文件轉爲.c文件再編譯爲C模塊


1240


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章