在R中进行并行计算时,如何在foreach中将元素分配给群集

问题描述

我有一组要由R中的用户定义函数运行的元素。要依次运行这些元素需要很长时间。然后,我使用foreach()%dopar%makecluster()registerdoparallel()进行并行计算。我想知道这些元素如何分配到集群。假设我有100个元素,并注册了5个簇,元素1〜20被分配给簇1,依此类推,依此类推,或者它们是随机分配的。谢谢

解决方法

先准备好,先服务:

library(doParallel)
registerDoParallel(cl <- makeCluster(3))

foreach(i = 1:20,.combine = 'c') %dopar% {
  Sys.getpid()
}
[1] 13004  5924  6600 13004  5924 13004  6600  5924 13004  5924 13004  5924 13004
[14]  5924  6600 13004  5924  6600 13004  5924

stopCluster(cl)