问题标签 [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.
multithreading - Rust 人造丝 tcp 阻塞
我正在编写一个程序,它使用 ssh 在服务器上执行命令并获取输出。
我不明白的部分在代码中较低。
如果函数等待然后返回一个字符串,它会按预期工作,但如果使用 TCP,它会开始表现得很糟糕。我希望在 100 台主机上使用 100 个线程的速度会提高 100 倍,因为会同时打开 100 个套接字。
在睡眠版本中,更改poolThreads
直接影响执行时间。在带有 TCP 流的版本中,pool
从 1 更改为 100 有 100 个主机只会将其从 90 加速到 67,因为某些主机处于脱机状态。
我阅读了文档,但找不到任何可以帮助我的东西。
rust - 如何获取 Rayon 的 par_chunks_mut 中的块索引
我有一些数据,我想处理它并用它来填充一个已经存在的数组。例如,假设我想将每个值重复 4 次(playground):
这几乎可以工作,但 Rayon 没有将块索引传递给我,所以我不能在input[?]
. 有没有有效的解决方案?
rust - 我如何找到正确的组合器以使此代码与人造丝一起使用?
我想更改以下代码以避免使用 .unwrap 或 .expect :
我目前正在使用 crossbeam_utils::thread 并且正在考虑切换到人造丝。所以我需要将此代码更改为具有各种组合器的迭代器。我已经尝试了很多东西,但没有一个能正常工作。因此,如果有人可以帮助我,那就太好了。
rust - 意外的“找不到方法”编译器错误
这个问题源于我对cartesian_product
fromitertools
和into_par_iter
Rayon 的使用(在一个学习 Rust 的玩具项目中)。我的问题不是关于这个特定的代码,而是关于阅读 rustc 错误消息和 Rust 库文档的问题。
这按预期工作:
但是下面的代码无法编译并显示错误。Product
返回的文档cartesian_product
包括 的实现Iterator
,所以我希望into_par_iter
方法调用会进行类型检查,但事实并非如此。
这是失败的代码和产生的错误消息:
rust - 并行运行循环组合
以下代码计算语料库中每对元素之间的距离矩阵。但是,对于大型语料库,该过程变得相当冗长。我怎样才能将它与人造丝并行化?
multithreading - 如何使用 self 中的方法使用函数?
在尝试编写一些并行代码时,我不断遇到如下错误。我找到了一些解决方案,但它们都涉及我不想做的锁定。有什么办法可以解决这个问题吗?
linux - Rust`std::time::Instant`“惊慌失措'提供的瞬间比自己晚”
我正在尝试在 rust 中设置一个简单的计时器,它以一定的频率返回 true。
std::time::Instant
出于某种原因,在任务内使用时,这似乎总是会出现恐慌rayon
(如果重要的话,在 Legion ECS 中运行)。
这是唯一一篇包含相同信息的帖子,但归结为使用了不寻常的内核。我只是使用 Ubuntu 18.04,没有任何异常设置。
此外,我尝试了多台机器,但代码出现了同样的错误。
这与使用std::time::Instant
和有关rayon
吗?
memory-management - Rust 中 Rayon 和 Indicatif 的内存泄漏
所以,我正在尝试对哈希进行详尽的搜索。哈希本身在这里并不重要。由于我想使用 CPU 的所有处理能力,因此我使用 Rayon 来获取线程池和大量任务。搜索算法如下:
只是一个高级解释:随着任务完成他们的工作,他们将一对(密码,哈希)发送到主线程,主线程会将哈希与原始哈希(我试图为其查找密码的那个)进行比较)。如果它们匹配,很好,我返回 main 并返回一个表示成功的枚举值,以及产生原始哈希的密码。在所有迭代结束后,我将返回 main 并返回一个枚举值,该值指示未找到哈希,但使用最后一个密码,因此我可以在以后的某个运行中从这一点重试。
我正在尝试使用Indicatif来显示进度条,这样我就可以瞥见进度。
但我的问题是该程序正在增加它的内存使用量而没有明确的原因。如果我让它运行 10 亿次迭代,它会慢慢添加内存,直到填满所有可用的系统内存。
但是当我评论该行时bar.inc(1);
,程序的行为与预期一样,内存使用正常。
我用 Rayon 和 Indicatif 创建了一个测试程序,但没有哈希计算,它可以正常工作,没有内存错误行为。
这让我觉得我的代码中的内存管理有问题,但我看不到任何明显的东西。
multithreading - 如何使用人造丝进行枚举迭代?
我可以迭代和处理索引和变量,例如:
现在有了人造丝,据我所知,并行迭代par_iter()
不支持枚举,因为它具有ParallelIterator
.
Rayon 似乎有IndexedParallelIterator
,但我不确定如何使用它来产生与上面显示的简单 for 循环类似的结果。
无论如何在并行迭代时跟踪每个值的索引?简单的 for 循环会是什么样子?