我正在尝试处理一堆csv文件并在R中使用
mclapply()
并行返回数据框。我有一台64核的机器,但目前似乎只能利用1个核心,使用mclapply()
。实际上,目前运行lapply()
比mclapply()
更快。以下示例显示mclapply()未利用更多可用的核心:library(parallel)
test <- lapply(1:100,function(x) rnorm(10000))
system.time(x <- lapply(test,function(x) loess.smooth(x,x)))
system.time(x <- mclapply(test,function(x) loess.smooth(x,x), mc.cores=32))
user system elapsed
0.000 0.000 7.234
user system elapsed
0.000 0.000 8.612
有没有什么诀窍让这个工作起来?我不得不在这台机器上从源代码编译R(v3.0.1),是否有一些编译标志我错过了,以允许分叉?detectCores()
告诉我我确实有64个核心可以使用...任何提示都将感激不尽!
mclapply
只是lapply
的一个包装器。 - Frankulimit -n
命令会告诉你什么?你的操作系统/会话中是否有限制你可以使用的核心数量?你是从 GUI 运行 R,还是从终端运行? - Kevin Ushey