首页 > 解决方案 > 将未来的进展或从承诺传回主流程?

问题描述

说我有这个:

library(future)
plan(multisession)

promise = promises::future_promise({
  for (i in 1:100) {
    Sys.sleep(1)
    ## SOMEHOW REPORT PROGRESS TO MAIN HERE ##
  }
  i    
})

最后,它会以 100 的值解决 promise,但是如何i在 promise 的 worker 仍在运行时报告每个值?最简单的方法是什么?

我在 Windows 10 上,使用 Rstudio。

谢谢!

标签: rpromisefuture

解决方案


不知道如何使用 来做到这一点promise,但另一种方法是使用future.applyand progressr

library(future.apply)
library(progressr)

plan(multisession)

handlers(global = TRUE)
handlers("progress")

my_fcn <- function(xs) {
  p <- progressor(along = xs)
  y <- future_lapply(xs, function(x, ...) {
  Sys.sleep(1)
  p()
  })
}

my_fcn(1:100)


推荐阅读