Gbe*_*t90 9 ruby arrays multithreading
所以我有一个40000个元素的数组,我希望在每个元素上运行一个方法.
为了减少它需要的时间,我想在多个线程上运行它.也许将数组拆分成多个数组并在不同的线程或其他东西上运行.但我不知道如何开始.
假设数组是foo [],并且要调用的方法是bar().bar()返回一个字符串.代码执行后,我希望能够在一个大字符串中将所有字符串组合/加起来.
有没有办法做到这一点?我尽量让问题保持简单,但如果您想了解更多信息,请告诉我.
提前致谢!
如果我正确理解的话,你需要这样的代码片段:
foo = %w{1 2 3} # => ["1", "2", "3"]
# in your case it would be some time-consumed operation on string
def inc(element)
element.succ
end # => nil
inc("1") # => "2"
threads = foo.map do |f|
Thread.new { inc(f) }
end
# => [#<Thread:0x8d28694 run>, #<Thread:0x8d28630 run>, #<Thread:0x8d28590 run>]
threads.map { |t| t.value } # => ["2", "3", "4"]
Run Code Online (Sandbox Code Playgroud)