R未来计划似乎没有改变

时间:2020-10-27 21:58:12

标签: r asynchronous future

我正在寻找在Shiny应用程序中实现长时间运行的代码块(类似于this SO answer)的异步过程的方法,但不幸的是,我似乎无法让异步函数在单独的过程中启动。将Shiny排除在等式之外,Ive在Im的工作之下提供了一个最小的实现。在此示例中,我希望打印功能按“运行”->“第二”->“第一”的顺序执行,但是我将其视为“第二”->“运行”->“第一”,这意味着进程仅在需要时/在“第二条”打印语句之后运行。

不知道我是否做错了,所以想寻求一些建议。我确实收到了提到的here一次性错误,但是我尝试在RStudio和CLI中都运行,但结果相同,因此我认为这无关紧要。在我的机器(Max OS X Mojave)和Linux机器(Red Hat)上运行此命令可获得相同的结果。 Ive还测试了多进程,多核和多会话计划,没有任何变化,因此该计划可能没有更新...(请参阅“代码”的第二个块)

任何帮助将不胜感激!

require(promises)
require(future)


plan(multiprocess)

long_runner <- function(x){
  print("Running")
  Sys.sleep(5)
  return("First")
}

f <- future(long_runner("TEST"))
print("Second")
value(f)

当我打印promise(?)“ f”时,它确实声明了它的“ SequentialFuture”,所以也许计划没有更新?

> print(f)
SequentialFuture:
Label: ‘<none>’
Expression:
{
    do_something_dumb(5000)
}
Lazy evaluation: FALSE
Asynchronous evaluation: FALSE
Local evaluation: TRUE
Environment: <environment: 0x189ed58a0>
Capture standard output: TRUE
Capture condition classes: ‘condition’
Globals: 1 objects totaling 37.28 KiB (function ‘do_something_dumb’ of 37.28 KiB)
Packages: <none>
L'Ecuyer-CMRG RNG seed: <none> (seed = FALSE)
Resolved: TRUE
Value: 112 bytes of class ‘character’
Early signaling: FALSE
Owner process: 8267b58c-84b3-d1e2-3ff0-69f50b10353c
Class: ‘SequentialFuture’, ‘UniprocessFuture’, ‘Future’, ‘environment’

0 个答案:

没有答案