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

标签 r parallel-processing shared-memory

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

所以我想知道

1) 如果有某种方法可以将模型(R 中的变量)保存在内存中。

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

模型在所有预测期间都不会改变。它是一个存储在 .rdata 文件中的随机森林模型,大约有 500MB。加载此模型很慢。

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

非常感谢。

最佳答案

如果您每次都重新生成模型,您可以将模型保存为 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")

关于r - 在 R 中,有没有办法在同一台机器上的 R 的不同进程之间共享一个变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15188730/

相关文章:

c - 使用 OpenMP 优化循环后没有性能提升

java - 如何在另一个Jar中多次调用具有另一个Jar中的参数的Java类

c++ - 调试共享内存的内容

c - 如何删除未使用的共享内存和信号量?

c++ - 将字符串与 sprintf() 函数一起使用时出现问题

r - 为什么这个 dplyr dput 不起作用?

r - 使用 Chart.CumReturns 绘制时间序列图表

r - 将 broom::glance() 与 glmmTMB 结合使用

r - 计数距离太长

windows - 为什么 CUDA 内核无法在带有 CUDA 9.0 的 VS 2013 中启动