【发布时间】:2020-05-29 06:38:59
【问题描述】:
我是编程新手,我正在尝试使用现有代码在 Windows 中对 R 使用并行处理。
以下是我的代码的 sn-p:
if (length(grep("linux", R.version$os)) == 1){
num_cores = detectCores()
impact_list <- mclapply(len_a, impact_func, mc.cores = (num_cores - 1))
}
# else if(length(grep("mingw32", R.version$os)) == 1){
# num_cores = detectCores()
# impact_list <- mclapply(len_a, impact_func, mc.cores = (num_cores - 1))
#
# }
else{
impact_list <- lapply(len_a, impact_func)
}
return(sum(unlist(impact_list, use.names = F)))
这很好用,我在 Windows 上使用 R,所以代码进入 'else' 语句,它使用 lapply() 运行代码,而不是通过并行处理。
我添加了“else if”语句以使其适用于 Windows。因此,当我取消注释“else if”代码块并运行它时,我收到错误“Windows 不支持'mc.cores'> 1”。 请建议我如何在 Windows 中使用并行处理,以减少运行代码的时间。 任何帮助将不胜感激。
【问题讨论】:
-
或者未来的包,介绍here
-
furrr是对future包的一个很好的补充。请注意,Windows 上的并行性与 Linux 上的并行性不同。您将无法使用分叉,只能使用多会话。从 RStudio 启动时也有一些注意事项。
标签: r windows parallel-processing multicore