这两天在测试 ractor。一般的写法如下:
def ractor
threads = 4 #线程数
t = []
(1..threads).each do
r = Ractor.new do
B.xxx #执行方法
end
t << r
end
render json: t.map { |r| r.take }.reduce(:+)
end
但是感觉有点太繁琐了。以前用 gem parallel,写法是:
arr_new = Parallel.map(arr, in_processes:4) do |sub_arr| ...
自动把 arr 拆分,分配到多进程/多线程去运算,结果合并输出。
ractor 有没有类似的方法?
本来指望 gem parralle 升级一下,把多线程方法改为 ractor。然而并没有。找了下也没发现有别的 gem 可以做类似功能。