我正在尝试使用 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/