【发布时间】:2018-04-09 10:57:01
【问题描述】:
有没有办法在 R 中的多个会话之间共享一个 const 对象?
在我目前的情况下,我愿意运行 PAM 算法,为此它需要一个相异矩阵。在讨论中创建矩阵的过程——我的项目——需要我所有的随机存取存储器。但是,生成后它只需要 2Gb 的 RAM。我的电脑有 raw 8Gb 内存。
由于高维,算法收敛速度较慢,因此,我想并行运行多个函数。但是,我的计算机不处理另一个矩阵生成,但是由于该对象已经存在于另一个 session 中,我正在考虑是否有使用它的方法。
我希望它很清楚。如果不是,请留下评论,我将修改我的文字。提前谢谢你。
观察:
- 我有 Windows 和 Ubuntu 操作系统
- 我不确定 session 是否是正确的词
【问题讨论】:
-
AFAIK 这是不可能的,因为每个 R 会话都有自己的内存空间,您无法在外部访问它。
-
我可能没抓住重点,但如果您需要并行运行多个函数,为什么不在单个会话中并行运行它们而不是在多个会话中运行它们?
-
并行“workers”(R 进程)仅在那些worker 是派生进程时与主R 进程共享对象。例如
mclapply()使用的分叉进程仅在 Unix 和 macOS 上可用。在 Windows 上,您只能使用在自己的进程中运行的工作人员(他们自己的“R 会话”)。因此,您需要使用parallel::mclapply()、future::plan(multicore)或类似名称。 (仅供参考,可能会消耗您的内存的分叉进程存在其他问题,例如垃圾收集,但仍应比单独的 R 会话更好)。
标签: r parallel-processing