我正在进行一系列AWS调用,以便从安全组创建/删除规则,并希望通过并行化来加快速度。
是否有一种通用方法可以在固定大小的集合中并行化I / O绑定操作?采用集合,批量大小和功能块的方法会很不错。
答案 0 :(得分:2)
以下方法对我来说非常有效,产生了大约100倍的加速:
# A method to parallelize an operation across a collection.
# Example:
#
# fan_out [1, 2, 3, 4], 2 do |batch|
# puts batch.to_s
# end
#
# out >>
# [3, 4]
# [1, 2]
def fan_out(arr, num_batches, &block)
threads = []
arr.each_slice(arr.size / num_batches).each do |batch|
threads << Thread.new {
block.call(batch)
}
end
threads.each(&:join)
end