ruby 以四人为一组处理数组元素

标签 ruby

当每个元素都需要处理时,我有一个 ruby​​ 脚本数组:

threads = []
elemets.each do  |element|
    threads.push(Thread.new{process(element)}}
end
threads.each { |aThread|  aThread.join }

由于资源限制,如果一次不再处理四个元素,脚本将以最佳方式运行。

不,我知道我可以转储每个循环并使用一个变量来计算 4 个元素,然后等待 但是有没有更酷的 ruby​​ 方法来做到这一点?

最佳答案

您可以以 4 为一组枚举数组:

>> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12].each_slice(4) {|a| p a}
[1, 2, 3, 4]
[5, 6, 7, 8]
[9, 10, 11, 12]

所以你可以尝试类似的东西

elements.each_slice(4) do | batch |
    batch.each do | element |
        threads.push(Thread.new{process(element)}}

    end
    (do stuff to check to see if the threads are done, otherwise wait )
end

不过,这可能不是您所需要的 - 我从凌晨 3 点就起床了,只睡了几个小时。 :/

关于ruby 以四人为一组处理数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1988274/

相关文章:

ruby - Mongomapper 和 Sinatra 未定义方法 `update_attributes' 为 nil :NilClass

ruby-on-rails - Rails 如何通过将 form_for 放在 .each 循环中来获得多种形式?

ruby-on-rails - Ruby on Rails Rack Cors 中间件黑名单

ruby-on-rails - 如何创建运行脚本/控制台然后使用该环境运行命令的 ruby​​ 脚本?

适用于Web开发的Python还是Ruby?

ruby - 为 ruby​​ 1.9 设置全局默认编码

ruby-on-rails - 延迟作业 - 按对象 ID 查找

ruby-on-rails - 如何提交具有特定字段的表单?

ruby-on-rails - ActiveRecord 范围不起作用

ruby - 如何使用 Sinatra 和 DataMapper 解析 json 并将该数据写入数据库