首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mclapply而不是lapply停止R

mclapply而不是lapply停止R
EN

Stack Overflow用户
提问于 2012-06-21 05:20:43
回答 2查看 1.7K关注 0票数 3

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

这段代码会让我的R停止工作。请不要运行它,除非你对崩溃的R没有意见,并且知道如何使用"KILL -9“…

代码语言:javascript
复制
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

EN

回答 2

Stack Overflow用户

发布于 2012-06-23 10:03:43

尝试使用:

代码语言:javascript
复制
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

票数 4
EN

Stack Overflow用户

发布于 2014-02-07 04:22:51

这些代码对我来说都是完美而即时的。我在Fedora 20下运行R3.0.2,使用的是比您的机器更老的机器。也许您应该更新R安装,然后重试。

正如前面的评论所建议的,总是从终端R运行并行代码。我做了很多mclapply工作,但它很少或根本不能在RStudio中工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11128388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档