3 个版本 (稳定)
使用旧的 Rust 2015
1.0.1 | 2020年2月12日 |
---|---|
1.0.0 | 2018年11月18日 |
0.1.1 | 2016年12月5日 |
#1048 在 并发
每月47次下载
在 2 crates 中使用
26KB
462 行
管道器
管道器是一个 Rust 库,可以帮助您创建多线程工作管道。您可以选择每个管道步骤使用的线程数量,以调整 I/O 或 CPU 密集型工作负载的性能。
API 文档中包含代码示例。
链接
与 Rayon 的比较
Rayon 是另一个 Rust 并行计算库。如果您正在进行纯 CPU 密集型工作,您可能想尝试它,看看是否提供了更好的性能。
在我看来,管道器提供了更简单的接口。这个简单的接口使得组合可能既受 I/O 限制又受 CPU 限制的数据管道部分变得更容易。通常在这些情况下,您的瓶颈是 I/O,而不是并行执行库的速度,因此拥有一个不错的 API 可能更可取。
lib.rs
:
这个 crate 提供了一个用于并行处理的高级框架。
主要功能
- 从迭代器懒加载输入。
- 在用户指定的线程数中执行工作。
- 通过迭代器返回所有输出。
- 可选缓冲输出。
panic
在工作线程中被传播到输出迭代器。 (没有数据丢失。)- 没有
unsafe
代码。
// Import the Pipeline trait to give all Iterators and IntoIterators the
// .with_threads() method:
use pipeliner::Pipeline;
for result in (0..100).with_threads(10).map(|x| x + 1) {
println!("result: {}", result);
}
由于输出也是一个迭代器,因此您可以轻松创建具有不同线程数的管道,每个工作步骤一个
use pipeliner::Pipeline;
// You might want a high number of threads for high-latency work:
let results = (0..100).with_threads(50).map(|x| {
x + 1 // Let's pretend this is high latency. (ex: network access)
})
// But you might want lower thread usage for cpu-bound work:
.with_threads(4).out_buffer(100).map(|x| {
x * x // ow my CPUs :p
});
for result in results {
println!("result: {}", result);
}
依赖关系
~395KB