自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

使用Cython加速你的Python代碼

開發(fā) 后端
雖然Cython本身是一種獨(dú)立的編程語(yǔ)言,但它很容易合并到你的工作流程中。在執(zhí)行時(shí),Cython會(huì)將Python代碼轉(zhuǎn)換為C,通常會(huì)大大加快速度。

如果您曾經(jīng)用Python編寫過(guò)代碼,那么您可能花費(fèi)了比您希望的更多的時(shí)間等待某些代碼塊的執(zhí)行。雖然有一些方法可以提高代碼的效率,但是它很可能仍然比C代碼慢。這主要?dú)w結(jié)為Python是一種動(dòng)態(tài)編程語(yǔ)言,并將許多C在編譯期間負(fù)責(zé)的事情轉(zhuǎn)移到運(yùn)行。

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

使用Cython加速你的Python代碼

安裝Cython

為了能夠使用Cython,你需要一個(gè)C編譯器。因此,安裝過(guò)程因您當(dāng)前的操作系統(tǒng)而異。對(duì)于Linux,通常有GNU C編譯器(gncc)。對(duì)于Mac OS,你可以下載Xcode來(lái)獲取gncc。如果您應(yīng)該使用Windows,那么安裝過(guò)程會(huì)有點(diǎn)復(fù)雜。更多信息請(qǐng)?jiān)L問(wèn)Cython的GitHub:

https://github.com/cython/cython/wiki/InstallingOnWindows

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

  1. pip install Cython 

如何使用Cython

展示Cython功能的最簡(jiǎn)單方法是通過(guò)Jupyter notebook。要在我們的notebook中使用Cython,我們將使用IPython magic命令。Magic命令以百分號(hào)開始,并提供一些額外的特性,以增強(qiáng)您的工作流程。一般來(lái)說(shuō),有兩種類型的magic命令:

  • 行magic由一個(gè)“%”表示,只對(duì)一行輸入進(jìn)行操作
  • 單元格magic由兩個(gè)“%”表示,并對(duì)多行輸入進(jìn)行操作。

讓我們開始:

首先,為了能夠使用Cython,我們必須運(yùn)行:

  1. %load_ext Cython 

現(xiàn)在,每當(dāng)我們想在一個(gè)代碼單元中運(yùn)行Cython時(shí),我們必須首先在單元格中放入以下magic命令:

  1. %%cython 

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

Cython快了多少

Cython比普通Python代碼快多少實(shí)際上取決于代碼本身。例如,如果您運(yùn)行的是具有許多變量的計(jì)算開銷較大的循環(huán),那么Cython的性能將大大優(yōu)于常規(guī)Python代碼。遞歸函數(shù)也會(huì)使Cython比Python快得多。

讓我們用斐波那契序列來(lái)演示這一點(diǎn)。簡(jiǎn)單地說(shuō),這個(gè)算法是通過(guò)將前兩個(gè)數(shù)相加來(lái)找到下一個(gè)數(shù)。這是它在Python中的樣子:

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

首先,為了能夠使用Cython,我們必須運(yùn)行:

使用Cython加速你的Python代碼

如您所見,查找序列中的第39個(gè)數(shù)字花費(fèi)了13.3秒。這里的Wall time指的是函數(shù)調(diào)用從開始到結(jié)束所花費(fèi)的總時(shí)間。

讓我們?cè)贑ython中定義相同的函數(shù)。

使用Cython加速你的Python代碼

這是怎么回事?如你所見,我們?cè)谏厦媸褂昧艘恍┘?xì)胞magic,允許我們?cè)谶@個(gè)細(xì)胞中使用Cython。我稍后將解釋“-a”選項(xiàng)的作用。然后,我們基本上采用與上面相同的代碼,除了現(xiàn)在我們能夠使用靜態(tài)類型聲明并將n定義為integer類型。

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

代碼快了多少?讓我們來(lái)看看:

使用Cython加速你的Python代碼

在這種情況下,Cython大約比Python快6.75倍。這清楚地展示了利用Cython的節(jié)省時(shí)間的能力,在這方面,Cython提供了比常規(guī)Python代碼更好的改進(jìn)。

 

責(zé)任編輯:趙寧寧 來(lái)源: 今日頭條
相關(guān)推薦

2019-09-02 08:58:27

Python編譯器編程語(yǔ)言

2013-03-25 09:41:20

PythonCython

2019-05-16 14:50:32

CythonPython編程語(yǔ)言

2021-01-01 14:36:03

Python開發(fā)語(yǔ)言

2021-04-27 06:44:03

PythonCython編程語(yǔ)言

2019-10-17 09:57:08

Python設(shè)計(jì)電腦

2020-05-21 08:53:12

Python技術(shù)代碼

2020-05-21 15:14:15

Python列表字典

2017-02-14 08:33:48

CPULinux內(nèi)核

2021-07-16 10:32:33

前端元編程代碼

2020-09-02 14:00:05

Python代碼腳本

2014-08-08 13:40:53

AngularJS模塊

2021-11-17 21:58:02

Python編程語(yǔ)言

2020-07-01 07:41:22

Python加速代碼

2022-11-08 08:45:30

Prettier代碼格式化工具

2023-06-15 08:00:23

2018-02-25 09:12:15

PythonC語(yǔ)言代碼

2020-11-15 18:00:49

開源可視化工具Python

2019-10-17 10:30:34

Python腳本語(yǔ)言設(shè)計(jì)

2023-11-12 22:51:14

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)