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 中使用

Apache-2.0

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