Zi 字媒體
2017-07-25T20:27:27+00:00
熱文導讀 | 點擊標題閱讀講真,計算機專業可能快「一統天下」了!如果找不到好工作,你一定不是計算機專業老師,我建議你多掛點人Rust是Mozilla開發的注重性能和內存安全的語言,它的設計目的是逐漸取代C/C ++,但這個過程還需要一段時間。值得肯定的是,Rust在現有階段可以取代傳統上部分C語言庫。用於統計和機器學習的Python系統中的大部分內容都是用C語言編寫而成的,所以模塊被重寫的可能性非常大。雖然Rust是編譯型語言,Python是解釋型語言,但是由於兩者的ABI(應用程序二進位介面)在設計上存在相似性,Rust代碼可以應用到Python上。現在一些Rust包已經被用於Python綁定,通過Rust庫也可以將C語言的API應用到Python上。大量新項目的應用使得開發Rust庫更容易,方便綁定Python和部署具有Rust二進位文件的Python軟體包。下面4個項目的實際應用,說明結合Python與Rust在一定程度上完全可以取代C/C ++。Rust-CPython定義:Rust-Cpython就是在Rust中CPython運行時的一組綁定,Rust程序連接到CPython上,使用它的ABI來運行Python程序,在Rust環境下與Python的面向對象一起工作。適用對象:熟練使用控制CPython的Rust程序員。需要注意的是,由於Python對象管理方式的問題,Rust的內存安全性能並不能完全發揮作用,所以使用要謹慎。PyO3定義:對於Rust開發人員來講,PyO3項目提供了兩個方向的基本方法來編寫綁定Python的Rust軟體。Rust程序可以與Python對象和解釋器介面,並且可以與C模塊相同的方式將Rust應用到Python中。PyO3支持的Python功能有限,但是實現最基本的功能還是可以的。PyO3慣用的Rust功能是通過裝飾既有代碼去實現Python-aware。適用人員:那些編寫與Python運行直接交互模塊的程序員。 Snaek定義:在這個項目的早期階段,Snaek允許開發人員根據需要創建載入Python動態的Rust庫,但是這個Rust庫不依賴於靜態連接Python的運行。Rust庫使用Snaek時,不需要專門針對Python進行編寫,只公開C語言兼容的方法就可以了。但Snaek的一個潛在缺點是不能使用ctypes,ctypes是與C代碼介面的標準Python庫,它使用的是cffi。cffi是由PyPy團隊開發的一個備選庫,學習cffi並不難,但如果真的要使用cffi,一些已經使用ctypes的項目都需要重寫。適用人員:將Rust寫入的方法應用到Python腳本中或想對Python做進一步了解的Rust程序員。Cookiecutter定義:這個項目涉及將二進位模塊與Python庫綁定時出現的常見問題。Cookiecutter從模板創建Python項目,可用的模板Cookiecutter PyPackage Rust Cross-Platform Publish簡化了將Rust二進位文件與Python庫捆綁在一起的過程。這個項目非常重要的目標是能夠生成二進位分發(Wheel),這樣就不需要最終用戶自己編譯Rust代碼。Windows用戶經常因為缺乏預編譯的Windows二進位Python包在工作中受阻,所以這個項目應該是非常受歡迎的。適用人員:那些用Rust綁定創建許多Python項目或試圖發布項目的程序員。作者 | 圖文來自網路、如涉及版權問題,請聯繫我們以便處理。文章內容純屬作者個人觀點,不代表本網觀點。讀書吧| QQ群:481160039
寫了
5860316篇文章,獲得
23313次喜歡