Ruby的Parallel gem似乎非常强大,但是我在使用它来构建集合时遇到了麻烦.
将进程设置为0,采用以下示例:
[174] pry(main)> @array = []
=> []
[175] pry(main)> Parallel.each(1..10, :in_processes=>0) {|x| @array.push(Random.rand(10))}
=> 1..10
[176] pry(main)> @array
=> [7, 3, 5, 6, 1, 5, 4, 4, 5, 1]
Run Code Online (Sandbox Code Playgroud)
但是当我们将流程设置为2时:
[177] pry(main)> @array = []
=> []
[178] pry(main)> Parallel.each(1..10, :in_processes=>2) {|x| @array.push(Random.rand(10))}
=> 1..10
[179] pry(main)> @array
=> []
Run Code Online (Sandbox Code Playgroud)
显然,这甚至不接近构建随机值数组的最佳方法,我想要的是,当有多个进程时循环结束后,附加到@array的值不存在.这是一个范围问题还是我误解了叉子是如何工作的?