我正在使用parLapply
并行运行一个函数,如下所示:
parLapply(cl, df, fun = SomeFunction)
其中cl
是我预先注册的集群。
但是函数执行时间太长,我想在执行时间太长时退出。
我知道R.utils
包具有withTimeOut
函数,该函数很好用(当存在从-退出的循环,而本质上是apply的循环)。
并行应用系列是否有类似功能?
答案 0 :(得分:2)
使用与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)