rust-python-example使用Rust扩展Python示例

Rust 写 Python 扩展的例子挺少见的,这个 rust-python-example 算是比较实用的一个。适合你想用 Rust 给 Python 提速,又不想踩太多坑的时候参考。代码结构清晰,注释也还行,直接拉下来跑跑就能明白思路。

Rust 的内存安全零成本抽象是它的招牌,写扩展的时候你能感觉到,比 C 写起来放心多了。不用担心一不小心就内存泄漏或者野指针,省了多 Debug 时间。

Python 调用 Rust 这块其实挺灵活的,项目里用到的是 pyo3maturin,这俩是现在主流方案。一个负责绑定,一个打包编译,适合做成模块发布到 PyPI 或者本地用。

比如你写了个密集计算函数,像图像、数据清洗那种,就可以放到 Rust 里实现,再暴露给 Python 用,速度差距能看得见。

// Rust 中写个平方函数
dfn square(x: i32) -> i32 {
  x * x
}
用 Python 直接调用,响应也快,代码也简单。

不过注意一点:写 Rust 逻辑时要考虑好线程模型,虽然 Rust 保证线程安全,但你还是得懂基本的 多线程编程。另外打包过程对环境也有点要求,比如 Rust toolchain 和 Python 版本得匹配。

如果你对性能有点追求,又想在 Python 里多玩点原生扩展,嗯,这套例子真挺值得一看。

zip
rust-python-example-master.zip 预估大小:15个文件
folder
rust-python-example-master 文件夹
folder
pyext-myrustlib 文件夹
file
Cargo.toml 264B
folder
src 文件夹
file
lib.rs 3KB
folder
pyext-myclib 文件夹
file
build.sh 42B
file
myclib.c 182B
file
myclib.i 82B
file
setup.py 221B
file
myclib.h 62B
file
doubles_all.py 2KB
file
doubles_with_rust.py 2KB
file
doubles.py 1KB
file
requirements.txt 30B
file
README.md 23KB
file
Makefile 1KB
file
.gitignore 257B
file
doubles_with_c_swig.py 2KB
zip 文件大小:15.7KB