问题标签 [rayon]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
rust - Rayon find_any,并返回找到的项目的值
假设我有一个f
带有签名的函数
现在我有一个Vec<u8>
,我希望找出这个 Vec 中是否有任何元素的值为f
,Ok(b)
并且在这种情况下,返回该值b
(并停止计算f
Vec 的其余部分)。我希望有一个带有签名的功能
这是我的第一个实现:
但我f
最后做了一个无用的计算。我如何重构代码以避免这种额外的f
调用?
Rayon's map
, filter
,reduce
不起作用,因为它们会通过整个 Vec,我想避免。
parallel-processing - 为什么基于人造丝的并行处理比串行处理需要更多时间?
学习Rayon,我想比较一下斐波那契数列的并行计算和串行计算的性能。这是我的代码:
我预计并行计算的经过时间会小于串行计算的经过时间,但结果相反:
我的串行/并行计算实现会有缺陷。但如果不是,为什么我会看到这些结果?
parallel-processing - 程序仍然使用 par_iter 和 par_extend 在一个线程上运行
我正在尝试并行化我的一部分代码,尽管它使用rayon
和并行迭代器par_iter()
and par_extend()
,但它看起来仍然像在单个线程上运行。
我只是创建一个 的向量i32
,用很多值填充它,然后将这些值移动到collections::HashSet
整数中。
我的单线程代码:
运行时间大约8.86 s
是平均水平。这是使用并行迭代器的代码:
8.62 s
“并行”版本的 平均运行时间几乎相同(
你知道我做错了什么,或者不明白吗?
file-io - rayon::str::Lines<'_'> 不是迭代器
我正在尝试在 Rust 中逐行处理文件并使用 Rayon 将其并行化。它抱怨以下内容
到目前为止,这就是代码的样子
我是否缺少特征定义?我该如何解决这个错误?
rust - 实现一个 rayon::iter::ParallelIterator
我对 Rust 比较陌生,但成功地使用Rayon并行处理数据。至少只要我正在处理现有的数据结构并且par_iter()
开箱即用。现在我已经实现了我自己的struct
,它也实现了Iterator
:
该代码适用于普通for item in queue_instance {...}
循环。我希望这足以让 Rayon 使用我的代码,但事实并非如此。我必须实现一个ParallelIterator。根据我尝试过的文档
编译器告诉我
<C as rayon::iter::plumbing::Consumer<QueueItem>>::Result
由于返回类型而预期
带有以下提示:
注意:预期类型
<C as rayon::iter::plumbing::Consumer<QueueItem>>::Result
找到类型QueueItem
注意:考虑将关联类型约束
<C as rayon::iter::plumbing::Consumer<QueueItem>>::Result
为QueueItem
或调用返回的方法<C as rayon::iter::plumbing::Consumer<QueueItem>>::Result
注意:有关更多信息,请访问https://doc.rust-lang.org/book/ch19-03-advanced-traits.html
就我的理解而言::Result
,应该是QueueItem
,而且我(还)不能从关于高级特征的章节中理解。我必须如何实现该drive_unindexed
功能才能使我的代码与 Rayon 一起使用?
rust - 我如何从 Rayon 的`par_iter()` 中捕捉到恐慌?
我正试图从内部捕捉恐慌par_iter()
并继续我在par_iter
封锁后所拥有的东西。
如果我有这个,我会正确地得到所有东西并且没有恐慌:
我得到总和后par_iter
当我尝试访问超过向量长度的索引时,我仍然打印我所拥有的任何内容,包括恐慌,但不要到达sum
:
结果:
我试图检查如果我实现了我能做什么panic_handler
:
它不起作用,甚至没有使用:
我真正的问题不是超出向量的范围,而是在par_iter
我不知道它是否会恐慌时捕捉恐慌。我的目标是收集结果并继续处理没有恐慌的事情。
rust - 如何更改函数以与 Rayon 并行运行?
我有一个函数,它获取一个数组、开始索引和结束索引。我想返回这个数组的最大元素。依次它工作正常。但我不知道如何将其转换为并行工作。所以你能告诉我怎么做吗?我一直在尝试 Rayon 的 for_each() 但总是遇到一些错误。转换后的函数会是什么样子?
rust - 使用带有自定义结构的 Rayon into_par_iter().sum()
我正在尝试使用 Rayon::prelude::into_par_iter 来总结一堆结构实例。我已经std::iter::Sum
为结构实现了,但仍然遇到错误。这是我的示例代码;
我被告知the trait 'std::iter::Sum' is not implemented for 'TestStruct'
,但我认为我正在实施它。我在这里错过了什么吗?
multithreading - 如何更改 Rayon 使用的线程数?
我正在使用人造丝库:
我想使用不同数量的线程运行此代码:1、2、3 和 4。
我已阅读有关Rayon 将产生多少线程的文档?其中说:
默认情况下,Rayon 使用与可用 CPU 数量相同的线程数。请注意,在启用了超线程的系统上,这等于逻辑内核的数量,而不是物理内核的数量。
如果要更改产生的线程数,可以将环境变量设置
RAYON_NUM_THREADS
为所需的线程数或使用ThreadPoolBuilder::build_global
函数方法。
但是,这些步骤对我来说并不清楚。如何在我的 Windows 10 PC 上执行此操作?
multithreading - 如何使用 Rayon 并行计算 PI
我的代码可以在没有 Rayon 的情况下使用 Ramanujan 公式计算 Pi,我想为并行线程实现 Rayon,因为这是我的项目。
我知道我需要使用这个
但我仍然不明白该怎么做。
这是我的代码