【问题标题】:parLapply timeout optionparLapply 超时选项
【发布时间】:2019-04-29 08:15:25
【问题描述】:
我正在使用parLapply 并行运行一个函数,如下所示:
parLapply(cl, df, fun = SomeFunction)
cl 是我预先注册的集群。
但是函数执行时间太长,我想在执行时间太长时退出。
我知道R.utils 包有函数withTimeOut 工作得很好(当有循环要退出时 - 并且应用本质上是一个循环)。
并行apply族有类似的功能吗?
【问题讨论】:
标签:
r
parallel-processing
apply
【解决方案1】:
使用与parLapply非常相似的foreach,我可以做到:
library(doParallel)
registerDoParallel(cl <- makeCluster(2))
foreach(ic = 1:5) %dopar% {
withCallingHandlers({
setTimeLimit(elapsed = 4, transient = TRUE)
Sys.sleep(ic)
}, error = function(e) stop("timeout"))
}
stopCluster(cl)