當前位置:
首頁 > 知識 > 寫給Python程序員:如何利用Rust取代C/C ++?

寫給Python程序員:如何利用Rust取代C/C ++?

Rust是Mozilla開發的注重性能和內存安全的語言,它的設計目的是逐漸取代C/C ++,但這個過程還需要一段時間。

值得肯定的是,Rust在現有階段可以取代傳統上部分C語言庫。用於統計和機器學習的Python系統中的大部分內容都是用C語言編寫而成的,所以模塊被重寫的可能性非常大。

寫給Python程序員:如何利用Rust取代C/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的內存安全性能並不能完全發揮作用,所以使用要謹慎。

寫給Python程序員:如何利用Rust取代C/C ++?

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程序員。

寫給Python程序員:如何利用Rust取代C/C ++?

Cookiecutter

定義:這個項目涉及將二進位模塊與Python庫綁定時出現的常見問題。Cookiecutter從模板創建Python項目,可用的模板Cookiecutter PyPackage Rust Cross-Platform Publish簡化了將Rust二進位文件與Python庫捆綁在一起的過程。

這個項目非常重要的目標是能夠生成二進位分發(Wheel),這樣就不需要最終用戶自己編譯Rust代碼。Windows用戶經常因為缺乏預編譯的Windows二進位Python包在工作中受阻,所以這個項目應該是非常受歡迎的。

適用人員:那些用Rust綁定創建許多Python項目或試圖發布項目的程序員。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 IT168企業級 的精彩文章:

守正出奇 愛可生髮布「雲樹2.0」系列產品
GitLab新功能Auto DevOps面世,自動啟用,無需配置
華為消費者業務發布上半年業績,智能手機發貨量增速跑贏大市!
史上最全的遊戲開發程序員進階之路!
馬斯克與扎克伯格互懟 人工智慧到底是機遇還是威脅?

TAG:IT168企業級 |

您可能感興趣

利用PHPstorm進行代碼review
如何利用postMessage竊取編輯用戶的Cookie信息
在Linux終端中監控CPU利用率:Stress Terminal UI(s-tui)
如何利用Google Colab免費訓練StarCraft II
Stratasys合作夥伴利用J750和HP Multi Jet Fusion 3D列印技術
MacOS中惡意的Installer Plugin利用
薈搜全球 Instagram-如何利用Insights
Nat Biotechnol:利用CRISPR/Cas9誘導的DNA瘢痕序列追蹤細胞譜系
利用Python和Selenium使酒店Wifi免費
Mirai和Gafgyt新變種利用Struts和SonicWall漏洞攻擊企業
技術小白如何利用 Coding Pages 搭建免費的WordPress站點
利用Skywalking-netcore監控你的應用性能
利用谷歌object detection API實現Oxford-IIIT Pets Dataset 目標檢測趟坑記錄
利用Project Treble刷機,一加6實戰刷入Resurrection Remix
微軟開始通過Windows Security Alerts鼓勵更多用戶利用OneDrive備份
比Python快100倍,利用spaCy和Cython實現高速NLP項目
利用你所知道的Python技巧寫出更加Pythonic的代碼
注意!黑客可利用 iTunes Wi-Fi 操控你的 iPhone
利用Illustrator製作一個3DC字母
如何利用wpscan入侵WordPress-實例演示