我想使用llply使用多核doParallel后端(即doParallel::registerDoParallel(cores=8)
)执行一些并行计算,但是每次计算将花费不同的时间,因此我想为此计算将多核预调度选项设置为false。但是,我不确定如何将此选项传递给llply
,该选项将传递给foreach
,后者将其传递给doParallel
,最终将其传递给mclapply
。任何人都可以举个例子吗?
换句话说,如何在以下代码中禁用预调度?
library(plyr)
library(doParallel)
registerDoParallel(cores=2)
x <- llply(1:10, sqrt, .parallel=TRUE)
最佳答案
您可以使用llply“.paropts”选项执行此操作:
opts <- list(.options.multicore=list(preschedule=FALSE))
x <- llply(1:10, sqrt, .parallel=TRUE, .paropts=opts)
如您所料,“。paropts”选项将“.options.multicore”选项传递给foreach,该选项将其传播到doParallel上,后者使用
mc.preschedule=FALSE
调用mclapply。