From: Fredrik Date: 2008-04-16T13:55:05+09:00 Subject: Re: Parallel for loop Actually, I'll change it a bit. I added Process.waitall since there are otherwise some dead(?) processes left. module Enumerable def fmap &b result = map do |*a| r, w = IO.pipe fork do r.close w.write( Marshal.dump( b.call(*a) ) ) end [ w.close, r ].last end Process.waitall result.map{|r| Marshal.load [ r.read, r.close ].first} end end