mclapply,但不是lapply停止R



我需要在Intel i7(8核)上进行并行处理,并使用Ubuntu 12.04(64位)和R2.15.0(来自RStudio)。我已经成功地完成了几个星期,但是从昨天开始,任何并行R处理的尝试都会减慢处理速度,因此它几乎已经死了。计算机本身和以前一样快(网页浏览等),但R只是等待和等待。我通常每天更新Ubuntu(Update Manager),但不确定这是否与这里相关。

这段代码阻止我的 R 工作。请不要运行它,除非你对崩溃的R感到满意,并且知道如何使用"KILL -9"......

library(parallel)
library(gsubfn)
doSomething <- function(xx) {
  test <- 16
  return(test)
}
in.list <- list(1, 2, 3)
out.list.1 <- lapply(in.list, doSomething)                # Works well (< 1s)
out.list.2 <- mclapply(in.list, doSomething)              # Takes tens of minutes
out.list.3 <- mclapply(in.list, doSomething, mc.cores=1)  # Works well (< 1s)
out.list.4 <- mclapply(in.list, doSomething, mc.cores=2)  # Takes tens of minutes

经过大量的测试和"kill -9",我想我已经将问题隔离到"library(gsubfn)"。它会自动加载"加载所需的包:原型加载所需的命名空间:tcltk正在加载 Tcl/Tk 接口...完成"

我需要 gsubfn 包,所以它不是一个排除它的选项。可以采取任何措施来避免此问题吗?

感谢所有为 R 标签做出贡献的人!

/克里斯

尝试使用:

options(gsubfn.engine = "R")

这将阻止 gsubfn 加载 tcl,这可能会导致 mclapply 函数出现问题。看:如何防止 R 加载包?

和:https://stat.ethz.ch/pipermail/r-sig-hpc/2009-August/000324.html

这段代码对我来说都完美而即时地工作。 我在 Fedora 20 下运行 R 3.0.2,使用的是比你的机器更旧的机器。 也许您应该更新 R 安装并重试。

如前面的评论所建议的,始终从终端 R 运行并行代码。 我做了很多 mcclapply 工作,它很少或从不在 RStudio 中工作。

最新更新