<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          如何使用C語言優(yōu)化Python代碼

          共 1822字,需瀏覽 4分鐘

           ·

          2021-05-09 17:30


          如何使用C語言優(yōu)化Python代碼

          Cython是Python編程語言的編譯器,旨在優(yōu)化性能并形成擴(kuò)展的Cython編程語言。作為Python的擴(kuò)展,Cython也是Python語言的超集,它支持調(diào)用C函數(shù),并在變量和類屬性上聲明C類型。這使得包裝外部C庫、將C嵌入現(xiàn)有應(yīng)用程序或以Python的語法編寫C擴(kuò)展變得像Python本身一樣簡單。

          Cython通常用于創(chuàng)建加速Python代碼執(zhí)行的C模塊。在解釋語言效率不高的復(fù)雜應(yīng)用程序中,這一點很重要。

          安裝Cython

          可以使用Python在Linux、BSD、Windows或macOS上安裝Cython:

          將Python轉(zhuǎn)換為C

          從Cython開始的一個好方法是使用一個簡單的“Hello World ”應(yīng)用程序。這不是優(yōu)勢的最好證明,但它顯示了你使用時會發(fā)生什么。

          首先,在一個名為hello.pyx的文件中創(chuàng)建這個簡單的Python腳本(.pyx擴(kuò)展名并不神奇,從技術(shù)上講,它可以是任何東西,但它是Cython的默認(rèn)擴(kuò)展名):

          接下來,創(chuàng)建一個Python安裝腳本。setup.py文件類似于Makefile的Python版本,Cython可以使用它來處理Python代碼:

          最后,使用Cython將Python腳本轉(zhuǎn)換為C代碼:

          要使用Python“Hello World”腳本的C代碼版本,請打開Python提示并導(dǎo)入創(chuàng)建的新模塊:

          將C代碼集成到Python中

          計算能力的一個很好的通用測試是計算素數(shù)。素數(shù)是大于1的正數(shù),只有在除以1或本身時才產(chǎn)生正整數(shù)。理論上很簡單,但隨著數(shù)字變大,計算要求也增加了。在純Python中,它可以在10行代碼下完成:

          此腳本在成功后將保持不變,如果數(shù)字不是素數(shù),則返回一條消息:

          $ ./prime.py 3

          $ ./prime.py 4

          Not prime.

          將其轉(zhuǎn)換為Cython需要進(jìn)行一些工作,一方面使代碼適合用作庫,另一方面使性能提高。

          腳本和庫

          許多用戶將Python作為一種腳本語言進(jìn)行學(xué)習(xí):把將要執(zhí)行的步驟告訴Python,然后它就可以完成工作。當(dāng)了解更多有關(guān)Python(以及一般來說是開放源代碼編程)的知識時,會發(fā)現(xiàn)許多最強(qiáng)大的代碼包含在其他應(yīng)用程序可以利用的庫中。代碼越不具體,程序員將其重新用于其他應(yīng)用程序的可能性就越大。

          對于這個簡單的質(zhì)數(shù)計算器,將其轉(zhuǎn)換為Cython的過程是通過設(shè)置腳本開始的:

          將腳本轉(zhuǎn)換為C:

          $ python setup.py build_ext --inplace

          到目前為止,一切似乎都運(yùn)行良好,但是當(dāng)嘗試導(dǎo)入和使用新模塊時,會出現(xiàn)錯誤:

          問題在于,Python腳本希望從終端運(yùn)行,在終端上,參數(shù)(在這種情況下,是要測試為質(zhì)數(shù)的整數(shù))很常見。需要修改腳本,以便可以將其用作庫。

          編寫一個庫

          庫不使用系統(tǒng)參數(shù),而是接受其他代碼的參數(shù)。不用使用sys.argv來引入用戶輸入,而是使代碼成為一個接受稱為number(或num或喜歡的任何變量名)的參數(shù)的函數(shù):

          這使腳本難以測試,因為當(dāng)在Python中運(yùn)行代碼時,永遠(yuǎn)不會執(zhí)行calculate函數(shù)。但是,Python程序員針對此問題設(shè)計了一種通用的解決方法,即使不是直觀的方法。當(dāng)Python解釋器執(zhí)行Python腳本時,有一個名為__name__的特殊變量被設(shè)置為__main__,但是當(dāng)它作為模塊導(dǎo)入時,__name__被設(shè)置為模塊的名稱。通過利用這一點,您可以編寫一個既是Python模塊又是有效的Python腳本的庫:

          現(xiàn)在,可以將代碼作為命令運(yùn)行:

          $ python ./prime.py 4

          Not a prime

          可以將其轉(zhuǎn)換為Cython以用作模塊:

          C語言Python

          使用Cython將代碼從純Python轉(zhuǎn)換為C可能會很有用。但是還有Cython功能可幫助用戶在轉(zhuǎn)換前優(yōu)化代碼,還可以選擇分析代碼以查找Cython與C交互的時間,等等。如果使用的是Python,希望通過C代碼增強(qiáng)代碼,或者進(jìn)一步了解庫如何提供比腳本更好的可擴(kuò)展性,或者只是對Python和C如何協(xié)同工作感到好奇,那么請開始使用Cython。


          關(guān)
          一鍵三連~~
          關(guān)注小編喲~


          瀏覽 33
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  大香蕉伊人丁香五天在线视频 | 国产精品毛片久久 | 淫色大吊人妖乱伦视频 | 亚洲内射学生妹 | 亚洲视频,中文字幕 |