Ruby子进程是否正确地同步STDOUT?

时间:2015-03-15 04:06:05

标签: ruby multiprocessing

我在数据库中查询要处理的项目集合,然后将集合拆分为批次,并分叉处理每个批次。类似于fork / join。

基本上,这就是它的样子:

STDOUT.puts {"started_at": Time.now.utc}.to_json
batch = DB[:items].all # batch will contain from 10k to 50k items
batch.each_slice(5_000) do |group|
  fork do
    group.each do |item|
      rval = {...}
      STDOUT.puts rval.to_json
    end
  end
end

results = Process.waitall
STDOUT.puts {"done": true, "finished_at": Time.now.utc}.to_json

每个子进程的输出是一条JSON记录,从几百字节到600 MiB的数据,全部在一行上。

两个子进程是否有可能相互破坏?

0 个答案:

没有答案