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并发

Download history 8/week @ 2024-05-20 10/week @ 2024-07-01

每月283 次下载
用于 brck

MIT/Apache 许可

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