我想使用线程和队列运行一些计算,任何人都可以帮助我下面的代码吗?它看起来是否正确,我需要一个队列吗?
require 'thread'
queue = Queue.new
calculation = Thread.new do
MyItem.find_each(start: 0, batch_size: 100) do |item|
my_calc = ItemsCalculator.new(item)
details_to_save = my_calc.get_details
details_to_save.each do |dt|
dt.save
end
end
end
puts "finished"
答案 0 :(得分:0)
我们很难判断它是否“正确”,因为你没有告诉我们它应该做什么。
Queue提供了一种同步之间通信的方法 线程。
您是否尝试在线程之间同步数据?如果是,那么您应该使用Queue
。但是,您的代码目前的工作方式只是创建新的Queue
对象,但从未实际使用它。根据你的代码判断,我猜你不需要它。看起来您将计算结果保存到数据库中,因此您无需跨线程发送它们。