日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

用Cython加速Python代码,快到起飞!

發布時間:2024/9/15 python 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用Cython加速Python代码,快到起飞! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


點擊??“小詹學Python”,選擇“星標”公眾號

重磅干貨,第一時間送達

編譯 | sunlei

發布 | ATYUN訂閱號



本文介紹


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

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


安裝Cython


為了能夠使用Cython,您需要一個C編譯器。因此,安裝過程會根據您當前的操作系統而有所不同。對于Linux,通常存在GNUC編譯器(gncc)。對于Mac OS,您可以下載Xcode來獲得gncc。如果您應該使用Windows,安裝過程會稍微復雜一些。更多信息請訪問Cython’s GitHub。

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

1pip?install?Cython


如何使用Cython


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

  • 行magic由單個“%”表示,并且只在一行輸入進行操作

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

  • 讓我們開始:

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

    1%load_ext?Cython

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

    1%%cython

    完成這些之后,就可以開始編寫Cython代碼了。


    Cython跑得有多快?


    與普通Python代碼相比,Cython的速度快多少實際上取決于代碼本身。例如,如果您正在運行具有許多變量的計算開銷較大的循環,Cython將大大優于常規Python代碼。遞歸函數也會使Cython比Python快很多。

    讓我們用斐波那契數列來證明這一點。簡單地說,這個算法通過把前兩個數相加找到下一個數。下面是Python中可能出現的情況:

    我們讓Python工作:

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

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

    這是怎么回事?正如你所看到的,我們正在使用一些單元魔法,使我們可以在這個單元中使用Cython。我將很快解釋“-a”選項的作用。然后,我們基本上使用與上面相同的代碼,只是現在我們能夠使用靜態類型聲明并將n定義為integer類型。


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

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

    本例中,Cython的速度大約是Python的6.75倍。這清楚地展示了利用Cython節省時間的能力,與常規Python代碼相比,Cython提供了最大的改進。


    附加選項


    如果您已經了解C語言,Cython還允許訪問C代碼,而Cython的創建者還沒有為這些代碼添加現成的聲明。例如,使用以下代碼,可以為C函數生成Python包裝器并將其添加到模塊dict中。

    Cython證明了許多額外的功能,比如并行性,這些功能在文檔中都得到了很好的描述,您可以在這里找到這些功能。


    結論


    如果您有時遇到不得不等待太長時間才能執行python代碼的問題,那么cython提供了一種非常靈活的集成和高效的方法來加速代碼的執行。最重要的是,如果您對C稍微熟悉一點,它提供了許多進一步優化代碼的功能。如果您有任何建議或評論,請隨時與我聯系。

    原文鏈接

    https://towardsdatascience.com/speed-up-your-python-code-with-cython-8879105f2b6f


    推薦閱讀

    誰偷偷刪了你的微信?別慌!Python 幫你都揪出來了

    總結

    以上是生活随笔為你收集整理的用Cython加速Python代码,快到起飞!的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。