中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么使用Cython加速Python代碼

發布時間:2021-10-29 16:58:19 來源:億速云 閱讀:232 作者:iii 欄目:編程語言

這篇文章主要講解了“怎么使用Cython加速Python代碼”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“怎么使用Cython加速Python代碼”吧!

如果您曾經用Python編寫過代碼,那么您可能花費了比您希望的更多的時間等待某些代碼塊的執行。雖然有一些方法可以提高代碼的效率,但是它很可能仍然比C代碼慢。這主要歸結為Python是一種動態編程語言,并將許多C在編譯期間負責的事情轉移到運行。

不過,如果喜歡用Python編碼,并且仍然希望加快代碼速度,那么可以考慮使用Cython。雖然Cython本身是一種獨立的編程語言,但它很容易合并到你的工作流程中。在執行時,Cython會將Python代碼轉換為C,通常會大大加快速度。

怎么使用Cython加速Python代碼

安裝Cython

為了能夠使用Cython,你需要一個C編譯器。因此,安裝過程因您當前的操作系統而異。對于Linux,通常有GNU C編譯器(gncc)。對于Mac  OS,你可以下載Xcode來獲取gncc。如果您應該使用Windows,那么安裝過程會有點復雜。

一旦你有了你的C編譯器,所有你需要運行在你的終端是:

pip install Cython

如何使用Cython

展示Cython功能的最簡單方法是通過Jupyter notebook。要在我們的notebook中使用Cython,我們將使用IPython  magic命令。Magic命令以百分號開始,并提供一些額外的特性,以增強您的工作流程。一般來說,有兩種類型的magic命令:

  • 行magic由一個“%”表示,只對一行輸入進行操作

  • 單元格magic由兩個“%”表示,并對多行輸入進行操作。

讓我們開始:

首先,為了能夠使用Cython,我們必須運行:

%load_ext Cython

現在,每當我們想在一個代碼單元中運行Cython時,我們必須首先在單元格中放入以下magic命令:

%%cython

一旦您完成了這些,您就可以開始使用Cython進行編碼了。

Cython快了多少

Cython比普通Python代碼快多少實際上取決于代碼本身。例如,如果您運行的是具有許多變量的計算開銷較大的循環,那么Cython的性能將大大優于常規Python代碼。遞歸函數也會使Cython比Python快得多。

讓我們用斐波那契序列來演示這一點。簡單地說,這個算法是通過將前兩個數相加來找到下一個數。這是它在Python中的樣子:

def fibonacci(n):    if n < 0:         print("1st fibonacci number = 0")    elif n == 1:         return 0    elif n == 2:         return 1    else:         return fibonacci(n-1) + fibonacci(n-2)

首先,為了能夠使用Cython,我們必須運行:

怎么使用Cython加速Python代碼

如您所見,查找序列中的第39個數字花費了13.3秒。這里的Wall time指的是函數調用從開始到結束所花費的總時間。

讓我們在Cython中定義相同的函數。

怎么使用Cython加速Python代碼

這是怎么回事?如你所見,我們在上面使用了一些細胞magic,允許我們在這個細胞中使用Cython。我稍后將解釋“-a”選項的作用。然后,我們基本上采用與上面相同的代碼,除了現在我們能夠使用靜態類型聲明并將n定義為integer類型。

如您所見,通過在這個神奇的命令之后添加“-a”,我們收到了注釋,這些注釋顯示了代碼中有多少Python交互。這里的目標是去掉所有的黃線,用白色的背景代替。在這種情況下,沒有Python交互,所有代碼都將在C中運行。您還可以單擊每一行旁邊的“+”符號,查看Python代碼的C語言翻譯。

代碼快了多少?讓我們來看看:

怎么使用Cython加速Python代碼

在這種情況下,Cython大約比Python快6.75倍。這清楚地展示了利用Cython的節省時間的能力,在這方面,Cython提供了比常規Python代碼更好的改進。

感謝各位的閱讀,以上就是“怎么使用Cython加速Python代碼”的內容了,經過本文的學習后,相信大家對怎么使用Cython加速Python代碼這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

顺义区| 盐池县| 广德县| 石景山区| 无锡市| 集安市| 陆河县| 漯河市| 徐闻县| 福安市| 榆树市| 绥德县| 灵宝市| 屯门区| 岳池县| 大同市| 清远市| 丰宁| 上高县| 香格里拉县| 沈丘县| 比如县| 鄂温| 新晃| 阿瓦提县| 安达市| 鸡东县| 天镇县| 定襄县| 西乌| 嘉黎县| 察雅县| 万载县| 绍兴县| 霍州市| 且末县| 通海县| 新干县| 辉南县| 安顺市| 石狮市|