我需要在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做出贡献!
/克里斯
答案 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中工作。