我正在构建一个resque作业,它将对一个大型阵列(超过70K元素)执行非常繁重的计算。
基本上,数组的每个元素都是执行繁重计算的函数的参数。该函数写在lib
文件夹中的单独文件中。这个过程非常缓慢,目前一次只运行1个线程而不是4个或5个。
我试过这样的事情:
thread = []
new_array = original_array.each_slice(original_array.length/4).to_a #Split array in 4 parts so we can have a thread for each part
new_array.each do |a|
thread << Thread.new {
a.each do |element|
establish_active_record_connection do |conn|
perform_heavy_operation(element)
end
end
}
end
thread.each {|t| t.join}
......
但它没有运行4个并发线程来加速进程。之后我尝试fork
而不是线程。没有足够的改进。
任何人都在ruby中处理并发线程,对如何改进此类实现有任何建议吗?
提前致谢!