我需要在英特尔i7 (8核)上进行并行处理,并使用Ubuntu12.04(64位)和R2.15.0 (来自RStudio)。我已经成功地这样做了几个星期,但从昨天开始,任何并行R处理的尝试都会减慢处理速度,因此它几乎是死的。计算机本身和以前一样快(网页浏览等)但是R只是等待和等待。我通常每天更新Ubuntu (更新管理器),但不确定这是否与这里相关。
这段代码会让我的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)“。它会自动加载“加载所需的包: proto加载所需的命名空间: tcltk加载Tcl/Tk接口...完成”
我需要gsubfn-package,所以不能排除它。有什么办法可以避免这个问题吗?
感谢为R-tag做出贡献的每一个人!
/Chris
发布于 2012-06-23 10:03:43
尝试使用:
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
发布于 2014-02-07 04:22:51
这些代码对我来说都是完美而即时的。我在Fedora 20下运行R3.0.2,使用的是比您的机器更老的机器。也许您应该更新R安装,然后重试。
正如前面的评论所建议的,总是从终端R运行并行代码。我做了很多mclapply工作,但它很少或根本不能在RStudio中工作。
https://stackoverflow.com/questions/11128388
复制相似问题