mclapply但没有lapply停止R

时间:2012-06-20 21:20:43

标签: r ubuntu parallel-processing

我需要在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

经过大量测试并“杀死-9”后,我想我已将问题分离到“库(gsubfn)”。它自动加载“加载所需的包:proto 加载所需的命名空间:tcltk 加载Tcl / Tk界面......完成“

我需要gsubfn-package,所以不能排除它。可以做些什么来避免这个问题吗?

感谢所有人为R-tag做出贡献!

/克里斯

2 个答案:

答案 0 :(得分:4)

尝试使用:

options(gsubfn.engine = "R")

这会阻止gsubfn加载tcl,这可能会导致mclapply函数出现问题。看到: How can I prevent R from loading a package?

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

答案 1 :(得分:1)

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

正如之前的评论建议的那样,总是从终端R运行并行代码。我做了很多mclapply工作,很少或从不在RStudio中工作。