成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

用Cython加速Python代碼,速度溜到飛起

開發 后端
如果你曾用Python編寫代碼,那么你可能花了更多的時間等待某些代碼塊的執行,而不是你想要的。雖然有一些方法可以使您的代碼更有效,但它很可能仍然比C代碼慢。這主要歸結為Python是一種動態編程語言,并將許多東西移動到C語言編譯期間處理的運行時。

介紹

如果你曾用Python編寫代碼,那么你可能花了更多的時間等待某些代碼塊的執行,而不是你想要的。雖然有一些方法可以使您的代碼更有效,但它很可能仍然比C代碼慢。這主要歸結為Python是一種動態編程語言,并將許多東西移動到C語言編譯期間處理的運行時。

[[275456]]

不過,如果你像我一樣喜歡用Python編寫代碼并且仍想加速你代碼,你可以考慮使用Cython。雖然Cython本身是一種獨立的編程語言,但很容易將其整合到例如Jupyter筆記本工作流程。在執行時,Cython將您的Python代碼轉換為C,通常會顯著加快它的速度。

安裝Cython

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

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

  1. pip install Cython 

如何使用Cython

演示Cython功能的最簡單方法是通過Jupyter筆記本。要在我們的筆記本中使用Cython,我們將使用IPython魔術命令。 Magic命令以百分號開頭,并提供一些可以增強工作流程的附加功能。通常,有兩種類型的魔術命令:

  1. 線條魔法由單個'%'表示,并且僅在一行輸入上操作
  2. 單元格魔術用兩個'%'表示,并在多行輸入上操作。

讓我們開始吧:

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

  1. %load_ext Cython 

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

  1. %%cython 

一旦你完成了,你就可以開始在Cython中開始編碼了。

Cython的速度有多快?

與常規Python代碼相比,Cython的速度有多快取決于代碼本身。例如,如果您運行具有許多變量的計算量很大的循環,Cython將大大優于常規Python代碼。遞歸函數也會使Cython比Python快得多。

讓我們用Fibonacci序列來證明這一點。簡單地說,這個算法通過將前兩個數字相加來找到下一個數字。以下是Python中的內容:

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

讓Python工作:

用Cython加速Python代碼,速度溜到飛起

如您所見,在序列中找到第39個數字需要13.3秒來計算。此處的掛起時間是指從調用該函數開始到結束所用的總時間。

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

用Cython加速Python代碼,速度溜到飛起

這里發生了什么?正如您所看到的,我們正在使用一些單元格魔術,允許我們在此單元格中使用Cython。我將很快解釋'-a'選項的作用。然后,我們基本上采用與上面相同的代碼,除了現在我們能夠使用靜態類型聲明并將n定義為整數類型這一事實。

正如您所看到的,通過在magic命令之后添加'-a',我們收到了注釋,向我們展示了代碼中有多少Python交互。這里的目標是擺脫所有的黃線,讓他們有一個白色的背景。在這種情況下,將不會有Python交互,所有代碼都將在C中運行。您還可以單擊每行旁邊的“+”符號以查看Python代碼的C轉換。

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

用Cython加速Python代碼,速度溜到飛起

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

其他選項

如果您已經知道C、Cython還允許訪問C代碼,Cython的制造商尚未添加即用型聲明。例如,使用以下代碼,您可以為C函數生成Python包裝器,并將其添加到模塊dict中。

  1. %%cython 
  2. cdef extern from "math.h"
  3.  cpdef double sin(double x) 

Cython證明了許多其他功能,例如并行性,這些功能在其文檔中描述非常簡潔。

結論

如果您有時遇到不得不等待太長時間才能執行Python代碼的問題,Cython提供了一種非常整齊且高效的方法來加速您的代碼。最重要的是,它提供了許多進一步優化您的合作的功能。

責任編輯:華軒 來源: 今日頭條
相關推薦

2020-07-23 14:15:42

Cython的Python代碼

2022-02-22 08:29:59

Vue前端防抖

2020-10-14 12:29:51

開源圖表 開發

2017-06-13 10:15:16

iMac蘋果iMac Pro

2017-06-05 14:35:45

2018-02-25 09:12:15

PythonC語言代碼

2018-02-24 08:54:41

2020-07-21 15:00:49

Java 8并行流Java

2023-03-31 15:10:32

PythonVSCode程序員

2013-03-25 09:41:20

PythonCython

2020-11-18 13:54:27

IDEAJava開發

2010-05-05 17:19:55

云計算

2020-09-02 14:00:05

Python代碼腳本

2013-07-03 09:52:13

熱部署熱替換

2013-07-04 13:19:24

Java開發速度

2014-03-17 10:28:52

PythonJulia

2021-11-25 16:25:53

代碼開發技術

2018-03-05 10:27:47

電腦卡頓舊電腦

2021-04-27 06:44:03

PythonCython編程語言
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲成人福利在线观看 | 国产ts人妖系列高潮 | 成人在线视频免费观看 | 国产视频精品免费 | 99久久99| 精品久久久久久亚洲精品 | 2021天天躁夜夜看 | 日韩一区二区三区在线 | 国产线视频精品免费观看视频 | 亚洲精品欧美精品 | 在线观看电影av | 国产精品99久久久久久动医院 | 国产精品一区在线观看 | 久久国产欧美日韩精品 | 久久久精彩视频 | 欧美日韩精品久久久免费观看 | 精产国产伦理一二三区 | 一区二区三区精品 | 国产一区二区三区四区五区加勒比 | av影片在线 | 久久97精品 | 日韩在线国产精品 | 久久久久亚洲 | 国产成人精品视频在线观看 | 国产亚洲精品久久久久久牛牛 | 中文字幕欧美一区 | 午夜免费网站 | 免费观看一级特黄欧美大片 | 亚洲一区影院 | 国产一级精品毛片 | 1级黄色大片 | 精品国产黄a∨片高清在线 www.一级片 国产欧美日韩综合精品一区二区 | 天天爽一爽 | 日韩精品在线一区 | av黄色在线 | 在线观看毛片网站 | 日韩精品三区 | 国产a级毛片 | 国产精品视频999 | 国产精品精品视频 | 国产精品高清在线 |