将 Rayon 与 SQLX“类似迭代器”的行流配合使用

Using Rayon with SQLX "iterator-like" stream of rows

提问人:Yuri Astrakhan 提问时间:9/16/2023 更新时间:9/16/2023 访问量:89

问:

Rust SQLX lib 提供了一个类似迭代器的接口,通常与 construct 一起使用。就我而言,每一行可能需要一些时间来处理,所以我想使用 Rayon 的,但这需要一个真正的迭代器。使用不是一个选项,因为所有行可能根本无法放入内存中。fetch(...)while let Some(row) = rows.try_next().await? {...}par_iter()fetch_all

如何使用 Rayon 处理 sqlx 流生成的数百万行?par_iterfetch

Rust-SQLX 射线

评论

1赞 drewtato 9/16/2023
这被称为 Stream(特别是 ),可以通过 spawn_blocking 来完成,通过通道将所有内容发送到运行 Rayon 的线程,或者简单地buffer_unordered,具体取决于 while 循环中发生的情况。TryStream
1赞 user4815162342 9/17/2023
由于您已经使用了异步,因此您不一定需要 rayon 来引入并行性。有关示例,请参阅此答案

答: 暂无答案