5 个版本
0.1.4 | 2024年4月10日 |
---|---|
0.1.3 | 2024年3月20日 |
0.1.2 | 2023年3月25日 |
0.1.1 | 2022年12月21日 |
0.1.0 | 2022年12月18日 |
#370 在 并发
每月283 次下载
用于 brck
18KB
333 行
Parseq
Parseq 是一个 Rust 库,它通过扩展特质向标准迭代器特质添加并行顺序映射。
请参阅 库文档 获取更多信息。
Parseq 的原始源代码托管在 此处。
许可
本作品根据 MIT 许可证和 Apache 许可证 2.0 版本的双重许可条款分发。
贡献
欢迎贡献!请通过电子邮件 联系 我。
lib.rs
:
并行顺序迭代器。
此库实现了一个扩展特质 ParallelIterator
,为标准 Iterator
特质添加并行顺序映射。
示例
use std::time::Duration;
use parseq::ParallelIterator;
let mut iter = [3,2,1]
.into_iter()
.map_parallel(|i| {
// Insert heavy computation here ...
std::thread::sleep(Duration::from_millis(100*i));
2*i
});
assert_eq!(iter.next(), Some(6));
assert_eq!(iter.next(), Some(4));
assert_eq!(iter.next(), Some(2));
assert_eq!(iter.next(), None);
请参阅 examples
目录中的实际示例。
功能
- Parseq 使用可配置数量的工作线程
- Parseq 保留原始迭代器的顺序
- Parseq 是惰性的,即在第一次调用
next
之前不会从原始迭代器中消费 - Parseq 不会将原始迭代器
fuse
- Parseq 使用常量空间:线性依赖于线程数和缓冲区大小,而不是可能无限的原生迭代器长度
- Parseq 从给定的闭包中传播 panic
替代方案
如果您不关心返回迭代器的顺序,您可能希望使用 Rayon。如果您关心顺序,请查看 Pariter。后者比此库提供更多功能,并且比它更早出现。
依赖
~345KB