IT行業(yè)里面,很多門外漢應(yīng)該也都知道,就是運(yùn)行速度最快的是C,運(yùn)行很慢的是Python。其實(shí)這都不是事,Python運(yùn)行慢,但是代碼量非常少。幾十行代碼就能做到C幾百行才能做到的東西。當(dāng)然小編這里并沒(méi)有瞧不起C,C乃是語(yǔ)言中的祖母,只是相對(duì)來(lái)講打個(gè)比方,今天這個(gè)小伙子厲害了,他居然運(yùn)行Python和C一樣快,直接驚呆了!咱們接下來(lái)看下!
如何使用Cython
下面的代碼來(lái)自Cython文檔:
這是一個(gè)例子,一個(gè)不完整的函數(shù)的實(shí)現(xiàn)。作為純Python代碼,速度很慢,因?yàn)镻ython必須在機(jī)器本機(jī)數(shù)字類型和其內(nèi)部對(duì)象類型之間來(lái)回轉(zhuǎn)換。
現(xiàn)在考慮相同代碼的Cython版本,并強(qiáng)調(diào)Cython的增加:
如果我們顯式聲明變量類型,無(wú)論是函數(shù)參數(shù)還是函數(shù)體(double,int等)中使用的變量,Cython都會(huì)將所有這些轉(zhuǎn)換成C語(yǔ)言。我們也可以使用cdef關(guān)鍵字來(lái)定義 盡管這些函數(shù)只能被其他的Cython函數(shù)調(diào)用,而不能被Python腳本調(diào)用,但是這些函數(shù)主要是用C實(shí)現(xiàn)的。
Cython分析和性能
可以通過(guò)分析代碼并親眼目睹瓶頸在哪里獲得最佳性能。Cython為Python的cProfile模塊提供鉤子,因此可以使用Python自己的分析工具來(lái)查看Cython代碼的執(zhí)行情況。無(wú)需在工具組之間切換;可以繼續(xù)所熟悉和喜愛(ài)的Python世界中工作。
它有助于記住所有情況下,Cython不是魔術(shù),仍然適用明智的現(xiàn)實(shí)世界的表現(xiàn)實(shí)踐。在Python和Cython之間來(lái)回穿梭越少,你的應(yīng)用運(yùn)行得越快。
謝謝閱讀,元方你怎么看?
聯(lián)系客服