RServe共享库代码

时间:2015-07-15 14:53:46

标签: r rserve

RServe产生的进程是否可能共享一些加载到内存中的公共库? 想象一下,我需要同时在100个不同的RConnections上执行波纹管代码。

library(libraryOfSize40MB)
fun()

这意味着我需要大约3.9GB的内存才能加载库。我宁愿加载一次库,然后执行fun()一百次,这样我就可以在便宜的主机上运行它。

也许这有用吗? https://github.com/s-u/Rserve/blob/master/NEWS#L40-L48

1 个答案:

答案 0 :(得分:4)

有可能。您必须使用加载库前面的run.serve从R shell运行RServe:

library(Rserve)

#load libraries so all connections will share them
library("yaml")
library("reshape")
library("rjson")
library("zoo")
(...)
library("stringr")

run.Rserve(debug = TRUE, port = 6311, remote=TRUE, auth=FALSE, args="--no-save", config.file = "/etc/Rserve.conf")

每个新连接都能看到这个库

library(RSclient)
con = RS.connect(host='10.1.2.3')
RS.eval(con, quote(search()))
> #lots of libraries available