我试图在Rails中多线程处理一个进程。我有一个名为modelA
的大型数据集,我目前有一个流程将其划分为创建日期(每天多行),然后每天运行一个流程。最后,每天的结果按照它们发生的顺序添加到数组中。我如何多线程并将其返回?
def function()
...
if originalDate > Time.now - 60 * 60 * 24
movingDate = Time.now - 60 * 60 * 24 * 31
else
movingDate = originalDate
end
begin
dayFeed = newFeed.select{|obj| obj.created_at < movingDate + 60 * 60 * 24}
dayFeed = dayFeed.select{|obj| obj.created_at > movingDate}
… A lot of calculations to determine summary…
b << summary
totals = summary
movingDate += 60 * 60 * 24
end while movingDate <= Date.today
[b, totals]
端
答案 0 :(得分:1)
只需创建多线程并像func一样使用它们,收集在主线程中的数组中添加所有结果。
我已复制并浏览本教程中的部分代码 http://www.tutorialspoint.com/ruby/ruby_multithreading.htm 这应该可以解决你的问题:
count = 0
arr = []
10.times do |i|
arr[i] = Thread.new {
sleep(rand(0)/10.0)
Thread.current["mycount"] = count
count += 1
}
end
arr.each {|t| t.join; print t["mycount"], ", " }
puts "count = #{count}"