我想使用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。

09-12 14:21