4个版本
0.1.3 | 2020年12月2日 |
---|---|
0.1.2 | 2020年11月7日 |
0.1.1 | 2020年10月29日 |
0.1.0 | 2020年9月24日 |
#5 在 #multiprocessing
8KB
83 代码行
PyO3-MultiProcessing
Rust为Python多进程模块提供的绑定。
安装
[dependencies]
pyo3-mp = "*"
使用
use std::thread::sleep;
use std::time::Duration;
use pyo3::prelude::*;
use pyo3::wrap_pyfunction;
use pyo3_mp::Process;
/// A Python function implemented in Rust.
#[pyfunction]
fn foo(_py: Python, i: usize) -> PyResult<()> {
println!("hello, number {}!", i);
// This may be worked on each process!
sleep(Duration::from_secs(1));
println!("goodbye, number {}!", i);
Ok(())
}
/// Converts the pyfunction into python object.
fn build_foo<'a>(py: Python<'a>) -> PyResult<Py<PyAny>> {
Ok(wrap_pyfunction!(foo)(py)?.into_py(py))
}
fn main() -> PyResult<()> {
Python::with_gil(|py| {
// Let's get a sample python function.
let foo = build_foo(py)?;
let mut mp = Process::new(py)?;
// Spawn 10 processes.
for i in 0..10 {
mp.spawn(&foo, (i,), None)?;
}
mp.join()
})
}
依赖
~2.5MB
~46K SLoC