【问题标题】:How to choose variable names for parallel computing?如何为并行计算选择变量名?
【发布时间】:2015-08-13 09:54:21
【问题描述】:

我正在使用foreach 包进行并行计算。在循环中,我定义了具有固定名称(如“temp”)的临时变量,这些变量将在下一次迭代中被覆盖,因为我通常在经典循环中这样做。现在我想知道这是否可以使用并行计算,或者在进行并行计算时是否会混淆变量。

基本上,潜在的问题是临时变量是否被赋予“本地”(相对于迭代)临时名称。程序是否在整个迭代过程中检测到哪些变量具有相同的名称,从而给它们这个“本地”临时名称。

【问题讨论】:

    标签: r foreach parallel-processing


    【解决方案1】:

    “foreach”在这方面遵循与“for”相同的逻辑。临时对象不会在全局环境中。请看下面的示例。

    library(foreach)
    library(doSNOW)
    
    cores <- 2
    cl <- makeCluster(cores)
    registerDoSNOW(cl)
    
    # data
    n <- 4
    m <- lapply(1:n, function(i) matrix((1:4), 2, 2))
    rnames <- c("r1", "r2")
    
    x <- foreach (i = 1:n) %dopar% {
    temp <- m[[i]] * i 
    temp <- as.data.frame(temp)
    data.frame(r = rnames, temp)
    }
    x # each new matrix are in the correct order in the output list
    temp # it exist only inside the foreach
    
    stopCluster(cl)
    

    【讨论】:

      猜你喜欢
      • 2012-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多