【发布时间】:2013-08-03 01:47:18
【问题描述】:
我正在尝试使用 RStudio 在具有 16 核 CPU 和 64 GB RAM 的 Windows 服务器上运行 foreach 循环。 (使用 doParallel 包)
“工作”进程从 for 循环外部复制所有变量(通过在运行 foreach 循环时在 Windows 任务管理器中观察这些进程的实例化来观察),从而使每个进程使用的内存膨胀。我试图将一些特别大的变量声明为全局变量,同时确保这些变量也在 foreach 循环内被读取,而不是被写入,以避免冲突。但是,这些进程仍会很快耗尽所有可用内存。
是否有机制确保“工作”进程不会创建某些“只读”变量的副本?比如声明这类变量的具体方式?
【问题讨论】:
-
我前段时间基本上问过同样的问题 (stackoverflow.com/questions/6251662/…),但同时情况可能发生了变化?
-
感谢 Roman,我也被困在 Windows 上;希望有人知道出路。我不需要轮询/更改大变量(网络),因为我只读取它来计算中心性分数..
-
根据您要共享的数据是否可以用矩阵表示,
bigmemory包可能会启用您所追求的。该软件包允许共享访问以进行并行处理,即使在 Windows 上也是如此。但是,如果要共享的对象不能用矩阵表示,那么您在这条路上就走不了多远。
标签: r foreach parallel-processing