在python中用来提升CPU密集工作,目前用Rust写扩展已成为C语言的有力竞争者, 主要推动者是PyO3,因为它为 Python 提供 了Rust 绑定, PyO3 使 Python 轻松使用 Rust 代码成为可能, 它还支持从 Rust 使用 Python,但我相信前者对 Python 生态系统的影响更大。
什么是PyO3?
PyO3是python和rust语言之间的桥梁,它允许你从python中调用rust,也运行rust中调用python,所以用PyO3可以创造一个高性能的python扩展,这个扩展可以直接用rust来编写。
如何使用PyO3?
首先,使用PyO3,需要在机器上安装pip install pyo3
,以下是一个简单实例:
1、创建一个Rust项目:
cargo new my_rust_library
2、在Cargo.toml文件中添加pyo3依赖:
[dependencies] pyo3 = "0.12.0"
3、在Rust代码中编写一个函数:
#[pymodule] fn my_rust_library(py: Python, m: &PyModule) -> PyResult<()> { m.add_wrapped(wrap_pyfunction!(add))?; Ok(()) } fn add(a: i32, b: i32) -> i32 { a + b }
4、在Python代码中调用Rust函数:
import my_rust_library result = my_rust_library.add(1, 2) print(result) # 3
从例子看调用简直不能太简单了,我们再看下另一个方式:
同样先创建一个名为 rust_code.rs
的 Rust 文件,内容如下:
#[no_mangle] pub extern "C" fn add_numbers(a: i32, b: i32) -> i32 { a + b }
接下来,创建一个名为 python_code.py
的 Python 文件,内容如下:
import pyo3 rust_module = pyo3.crate("rust_code") def add_numbers(a: int, b: int) -> int: return rust_module.add_numbers(a, b)
使用以下命令将 Rust 代码编译成动态链接库:
rustc --crate-type cdylib rust_code.rs
现在,你可以在 Python 代码中导入模块的方式调用 Rust 代码:
>>> from python_code import add_numbers >>> add_numbers(3, 5) 8
使用pyo3,你可以使用Rust代码在Python项目中实现高效的算法,同时仍然可以使用Python语言的简洁语法和丰富的第三方库。
有了这个利器 PyO3,希望在未来几年能在 Python 相关项目和工具中看到更多 Rust, 一些cpu密集型的工作将能很好解决,因此可以预计Python + Rust 组合在未来的就业市场上也可能有很高的需求。
关于Python技术储备
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、Python必备开发工具
三、精品Python学习书籍
当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
四、Python视频合集
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
五、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
六、Python练习题
检查学习结果。
七、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
最后祝大家天天进步!!
上面这份完整版的Python全套学习资料已经上传至CSDN官方,朋友如果需要可以直接微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】。