第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將Python編譯為機器代碼是否可行?

將Python編譯為機器代碼是否可行?

縹緲止盈 2019-12-25 14:19:54
將Python(可能通過中間C表示形式)編譯為機器代碼的可行性如何?大概需要鏈接到Python運行時庫,并且Python標準庫中Python本身的任何部分也需要進行編譯(并鏈接)。另外,如果您想對表達式進行動態(tài)求值,則需要捆綁Python解釋器,但是也許不允許這樣做的Python子集仍然有用。它會提供任何速度和/或內(nèi)存使用優(yōu)勢嗎?大概可以避免Python解釋器的啟動時間(盡管共享庫在啟動時仍需要加載)。
查看完整描述

3 回答

?
慕標5832272

TA貢獻1966條經(jīng)驗 獲得超4個贊

就像@Greg Hewgill所說的那樣,有很多理由說明為什么這并不總是可能的。但是,某些類型的代碼(例如非常算法的代碼)可以變成“真實的”機器代碼。

有幾種選擇:

  • 使用Psyco,它可以動態(tài)發(fā)出機器代碼。不過,您應(yīng)該仔細選擇要轉(zhuǎn)換的方法/函數(shù)。

  • 使用Cython,這是一種類似 Python的語言,已編譯為Python C擴展

  • 使用PyPy,它具有從RPython(Python 的受限子集,不支持Python的某些最“動態(tài)”功能)到C或LLVM的轉(zhuǎn)換器。

    • PyPy仍處于高度實驗階段

    • 并非所有擴展名都存在

之后,您可以使用現(xiàn)有軟件包之一(freeze,Py2exe,PyInstaller)將所有內(nèi)容放入一個二進制文件中。

總而言之:您的問題沒有一般性的答案。如果您具有對性能至關(guān)重要的Python代碼,請嘗試使用盡可能多的內(nèi)置功能(或詢問“如何使我的Python代碼更快”問題)。如果那沒有幫助,請嘗試識別代碼并將其移植到C(或Cython)并使用擴展名。


查看完整回答
反對 回復(fù) 2019-12-25
?
瀟瀟雨雨

TA貢獻1833條經(jīng)驗 獲得超4個贊

PyPy是一個在Python中重新實現(xiàn)Python的項目,使用對本機代碼的編譯作為實現(xiàn)策略之一(其他方法是具有JIT的VM,使用JVM等)。他們的編譯C版本平均比CPython運行慢,但對于某些程序則快得多。


Shedskin是一個實驗性的Python到C ++編譯器。


Pyrex是專門為編寫Python擴展模塊而設(shè)計的語言。它旨在彌合Python的精美,高級,易于使用的世界與C的混亂,低級的世界之間的鴻溝。


查看完整回答
反對 回復(fù) 2019-12-25
  • 3 回答
  • 0 關(guān)注
  • 966 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號