我的环境
- Ubuntu 18.04
- Rust 1.36.0(每晚)
- python 3.7.3
问题
我想用 Rust 写一个 python 扩展。我使用 PyO3 如下,
use pyo3::prelude::*;
#[pymodule(example)]
fn rust2py(py: Python, m: &PyModule) -> PyResult<()> {
#[pyfn(m, "fib")]
fn fib(_py: Python, n:i64) -> PyResult<i64> {
let out = fib_rust(n);
Ok(out)
}
Ok(())
}
fn fib_rust(n: i64) -> i64 {
if n == 1 || n == 2 {
return 1
}
fib_rust(n - 1) + fib_rust(n - 2)
}
我比较了 extension with rust 和 pure python 计算斐波那契数列的速度。我将这个程序构建为
cargo build --release
并复制当前目录下的.so
文件。我用 python 中的时间库测量了耗时,但扩展和纯 python 之间几乎相同。
这个程序有什么问题。
最佳答案
正如 SOFe 所说,在简单的代码中,纯 python 和 rust 扩展之间的区别是微不足道的。当我在我的代码中放入 for 循环时,在 rust 扩展方面性能很高。
关于python - 使用 pyo3 的 python 扩展不会提高速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57941377/