在R中,有没有办法在同一台机器上的R差分进程之间共享一个变量?

时间:2013-03-03 17:51:52

标签: r parallel-processing shared-memory

我的问题是我有一个大型模型,加载到内存的速度很慢。要在许多样本上测试它,我需要运行一些C程序来为模型生成输入功能,然后运行R脚本进行预测。每次加载模型都需要花费太多时间。

所以我想知道

1)是否有一些方法可以将模型(R中的变量)保存在内存中。

2)我可以运行R作为专用服务器的分离过程,然后R的所有预测过程都可以访问同一台机器上服务器中的变量。

在所有预测期间,模型永远不会改变。它是一个存储在.rdata文件中的randomForest模型,它有~500MB。加载此模型的速度很慢。

我知道我可以使用并行R(snow,doPar等)来并行执行预测,但是,这不是我想要的,因为它需要我改变我使用的数据流。

非常感谢。

1 个答案:

答案 0 :(得分:2)

如果每次都重新生成模型,可以将模型保存为RData文件,然后在不同的计算机上共享。虽然从磁盘加载到内存可能仍需要一些时间,但它将节省重新生成的时间。

   save(myModel, file="path/to/file.Rda")

   # then
   load(file="path/to/file.Rda")

编辑@ VictorK的建议: 正如Victor指出的那样,由于您只保存一个对象,saveRDS可能是更好的选择。

  saveRDS(myModel, file="path/to/file.Rds")

  myModel <- readRDS(file="path/to/file.Rds")