为什么要用Rust取代C/C ++重写Python底层?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了为什么要用Rust取代C/C ++重写Python底层?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2364字,纯文字阅读大概需要4分钟。
内容图文
https://www.techug.com/post/rewrite-python-with-rust.html?utm_source=tuicool&utm_medium=referral
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项目或试图发布项目的程序员。
内容总结
以上是互联网集市为您收集整理的为什么要用Rust取代C/C ++重写Python底层?全部内容,希望文章能够帮你解决为什么要用Rust取代C/C ++重写Python底层?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。