首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >依赖于其他函数的并行化代码

依赖于其他函数的并行化代码
EN

Stack Overflow用户
提问于 2017-03-30 09:47:21
回答 1查看 38关注 0票数 0

下面是我创建的函数的结构,其中实现了并行化。

代码语言:javascript
复制
    parallelized.function <- function(...){

          # Function used in the parallelization
            used.in.par <- function(...)
          # Function needed by used.in.par (auxiliars)
            aux1<-function(...)
            aux2<-function(...)
          #---------------------------------------------------#
          # PARALLELIZATION PROCESS
            suppressMessages(library(foreach))
            suppressMessages(library(doParallel))

                   ..................................

               %dopar%{ used.in.par(...) }

          #---------------------------------------------------#
         return(something)   
         }

代码可以工作,但它假设在aux1aux2中定义parallelized.function才能正常工作(这需要很多代码行)。

是否有任何方法调用aux1 aux2 函数,而不是在 parallelized.function**?**中编写所有代码?

我尝试用aux函数创建新脚本,并在source(".../aux1.R")source(".../aux2.R")中编写parallelized.function,但没有成功。

谢谢,

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-30 10:07:09

foreach包将为您做到这一点。为了访问当前环境中未定义的acccess函数,您应该使用.export;通过使用.packages选项,可以在每个工作人员上加载所需的包。

代码语言:javascript
复制
foreach(
  ...,
  .export = c('aux1', 'aux2'),
  .packages = c(...)
) %dopar% {
  ...
}

注意,不需要在foreach循环中加载foreachdoParallel包。但是当你注册集群的时候你错过了这部分。

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

https://stackoverflow.com/questions/43114188

复制
相关文章

相似问题

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