ruby - 附加到 Ruby 中的数组

标签 ruby parallel-processing

我正在尝试使用 ruby​​ 中的并行 gem 对数组的每个元素调用一个函数

require 'parallel'

arr = %w[one two three four five]
result ||= []    
Parallel.each(arr) do |elem|
  result << Random.rand(10)
end

但是,当我运行它时,结果数组总是空的。为什么不追加? 当 result 是 ruby​​ Queue

时,它的行为方式相同

最佳答案

传入一个:in_threads选项:

require 'parallel'

arr = %w[one two three four five]
result ||= []
Parallel.each(arr, :in_threads => 8) do |elem|
  result << Random.rand(10)
end

不要让我详细解释这个;我刚刚查看了 Parallel 项目的源代码,认为这是一种可能性并进行了尝试。

我的猜测是它告诉线程作为线程运行,以便它们可以共享 result 变量,而不是作为单独的进程运行。但这只是一个猜测。

关于ruby - 附加到 Ruby 中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21291096/

相关文章:

c++ - 并发处理数据。我需要注意什么?

ruby - 在 Heroku 中下载大文件

ruby - ERB 模板中的代数数字符号操作

ruby-on-rails - 虚拟 ruby 开发环境

Ruby 创建方程图像 (LaTeX)

ruby - 除了在 Ruby 的每个 do 循环中使用计数器变量之外,还有其他方法吗?

java - 使用 Streams 对数组进行并行排序

Delphi - 使用并行编程库中的 IFuture 读取大文件

performance - 使 qsub 阻塞直到工作完成?

Python - 并行化 2D 掩码数组的 python 循环?