在R中的并行环境中使用rm(list=ls())
我在R中运行并行运行函数的代码。代码最初设置一些参数并加载库等,然后调用一个函数(称为calibrate),该函数在多个工作进程中使用每个工作进程上的不同输入参数并行运行,并将结果返回中心。它可以工作,并且发生了多次迭代(有时在几个小时内超过100次),但在一段时间后崩溃,我怀疑这是内存资源问题。因此,我希望包含一个rm类型命令以减少内存使用: 起初,函数如下所示:在R中的并行环境中使用rm(list=ls()),r,linux,parallel-processing,R,Linux,Parallel Processing,我在R中运行并行运行函数的代码。代码最初设置一些参数并加载库等,然后调用一个函数(称为calibrate),该函数在多个工作进程中使用每个工作进程上的不同输入参数并行运行,并将结果返回中心。它可以工作,并且发生了多次迭代(有时在几个小时内超过100次),但在一段时间后崩溃,我怀疑这是内存资源问题。因此,我希望包含一个rm类型命令以减少内存使用: 起初,函数如下所示: Calibrate <- function() { rm(list = ls()) gc() ...rest of code
Calibrate <- function() {
rm(list = ls())
gc()
...rest of code calling other functions
}
无论问题是什么,
rm(list=ls())
都不是正确答案。Avoid.Avoided-通过在创建集群时添加type=“FORKS”进行修复。
Calibrate <- function() {
ENV <- globalenv()
ll <- ls(envir = ENV)
lf <- lsf.str(envir = ENV)
ll <- ll[ll != lf]
rm(list = ll, envir = ENV)
....rest of code calling other functions
}