异步服务器或在R中快速加载状态

fly*_*eep 9 r

我正在写一个有时必须通过R脚本传递数据的网络服务器.

不幸的是启动很慢,因为我必须加载一些加载其他库等的库.

还有办法吗?

  • 加载库,将解释器状态保存到文件,并在下次调用时快速加载该状态?要么

  • 维护一个可以发送消息的后台R进程(不仅仅是低级数据流),这些消息被委托给异步工作者(即在解析前一个消息之前发送新消息不应该阻塞)

不幸的是,R-Websockets是同步的.

tje*_*ean 3

Rserve 和 RSclient 是创建和使用异步服务器的简单方法。

打开两个 R 会话。

在第一个类型中:

require(Rserve)
run.Rserve(port=6311L)
Run Code Online (Sandbox Code Playgroud)

在第二个类型中:

require(RSclient)
rsc = RS.connect(port=6311L)
# start with a synchronous call
RS.eval(rsc, {x <<- vector(mode="integer")}, wait=TRUE)
# continue with an asynchronous call
RS.eval(rsc, {cat("begin")
              for (i in 1:100000) x[[i]] <-i
              cat("end")
              TRUE
        }, 
        wait=FALSE)
# call collect until the result is available
RS.collect(rsc, timeout=1)
Run Code Online (Sandbox Code Playgroud)