Cython 是什么?為什么會有 Cython?


楔子

1)因?yàn)槟承┬枨髮?dǎo)致不得不編寫一些多重嵌套的循環(huán),而這些循環(huán)如果用 C 語言來實(shí)現(xiàn)會快上百倍,但是不熟悉 C 或者不知道 Python 如何與 C 進(jìn)行交互; 2)因?yàn)?Python 解釋器的性能原因,如果將 CPython 解釋器換成 PyPy,或者干脆換一門語言,比如 Rust,將會得到明顯的性能提升,可是換不得。因?yàn)槟愕捻?xiàng)目組規(guī)定只能使用 Python 語言,解釋器只能是 CPython; 3)Python 是一門動態(tài)語言,但你希望至少在數(shù)字計(jì)算方面,能夠加入可選的靜態(tài)類型,這樣可以極大地加速運(yùn)算效果。因?yàn)閱渭兊臄?shù)字相加不太需要所謂的動態(tài)性,尤其是當(dāng)你的程序中出現(xiàn)了大量的計(jì)算邏輯時(shí); 4)對于一些計(jì)算密集型的部分,你希望能夠?qū)懗鲆恍╂敲?Numpy, Scipy, Pandas 的算法; 5)你有一些已經(jīng)用 C、C++ 實(shí)現(xiàn)的庫,你想直接在 Python 內(nèi)部更好地調(diào)用它們,并且不使用 ctypes、cffi 等模塊; 6)也許你聽說過 Python 和 C 可以無縫結(jié)合,通過 C 來為 Python 編寫擴(kuò)展模塊,將 Python 代碼中性能關(guān)鍵的部分使用 C 進(jìn)行重寫,來達(dá)到提升性能的效果。但是這需要你對 Python 解釋器有很深的了解,熟悉底層的 Python/C API,而這是一件非常痛苦的事情;

Cython 是什么?

克里奧爾人是居住在西印度群島的歐洲人和非洲人的混血兒,以此來形容 Cython 也類似于是一個(gè)(Python 和 C 的)混血兒。

為什么要有 Cython?


Cython 和 CPython 的區(qū)別?


還不過癮?試試它們
評論
圖片
表情
