用Cython加速Python到“起飞”
事先聲明,標(biāo)題沒有把“Python”錯打成“Cython”,因?yàn)橐v的就是名為“Cython”的東西。
Cython是讓Python腳本支持C語言擴(kuò)展的編譯器,Cython能夠?qū)ython+C混合編碼的.pyx腳本轉(zhuǎn)換為C代碼,主要用于優(yōu)化Python腳本性能或Python調(diào)用C函數(shù)庫。由于Python固有的性能差的問題,用C擴(kuò)展Python成為提高Python性能常用方法,Cython算是較為常見的一種擴(kuò)展方式。
我們可以對比一下業(yè)界主流的幾種Python擴(kuò)展支持C語言的方案:
有試用版水印,是因?yàn)楦FT_T
ctypes是Python標(biāo)準(zhǔn)庫支持的方案,直接在Python腳本中導(dǎo)入C的.so庫進(jìn)行調(diào)用,簡單直接。swig是一個通用的讓高級腳本語言擴(kuò)展支持C的工具,自然也是支持Python的。ctypes沒玩過,不做評價(jià)。以c語言程序性能為基準(zhǔn)的話,cython封裝后下降20%,swig封裝后下降70%。功能方面,swig對結(jié)構(gòu)體和回調(diào)函數(shù)都要使用typemap進(jìn)行手工編寫轉(zhuǎn)換規(guī)則,typemap規(guī)則寫起來略復(fù)雜,體驗(yàn)不是很好。cython在結(jié)構(gòu)體和回調(diào)上也要進(jìn)行手工編碼處理,不過比較簡單。
Cython簡單實(shí)例
我們嘗試用Cython,讓Python腳本調(diào)用C語言寫的打印“Hello World”的函數(shù),來熟悉一下Cython的玩法。注:本文全部示例的完整代碼見gihub >>> cython_tutorials
總結(jié)
以上是生活随笔為你收集整理的用Cython加速Python到“起飞”的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ubuntu 20.04 快速开启TCP
- 下一篇: mysql中函数大全_MySql 函数大