代码之家  ›  专栏  ›  技术社区  ›  ozgeneral

在R中使用异步未来追加全局表

  •  1
  • ozgeneral  · 技术社区  · 6 年前

    我试图创建一个全局表,该表由异步运行并行进程生成。它们是完全独立的,但是它们应该附加到相同的全局变量(这在R shiny中是反应性的,所以我要么需要在所有未来完成任务后有一个回调函数-这很好,但我不知道怎么做-要么我需要随着新结果的出现不断更新表)。

    我尝试了以下只锁定的方法(可能是因为所有进程都分配给同一个变量,当我将“a”更改为“b”时,它会工作,但结果没有用处)

    library("listenv")
    library("future")
    plan(multiprocess)
    futureVals <- listenv()
    options(future.globals.onMissing = "ignore")
    a<-0
    b<-0
    for(i in 1:5){
      futureVals[[i]] <- futureAssign(x='a', value={
          a <- a+1
          print(a)
      })
    }
    
    futureVals2 <- as.list(futureVals)
    print(a)
    

    我怎样才能实现这个目标?

    1 回复  |  直到 6 年前
        1
  •  4
  •   HenrikB    6 年前

    是的 未来(或其他并行、后台R工作人员)可以在主R过程中为变量赋值。任何结果都需要 返回的 作为值。这是R中所有并行/异步处理的基本属性。(*)

    说到这里,你可能会对 https://rstudio.github.io/promises/articles/shiny.html

    附:(*)您对 futureAssign() 似乎不正确。