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

时间:2014-01-29 13:04:15

标签: r

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

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

有没有办法

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

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

不幸的是,

R-Websockets是同步的。

1 个答案:

答案 0 :(得分:2)

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

打开两个R会话。

在第一种类型中:

require(Rserve)
run.Rserve(port=6311L)

在第二种类型中:

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)