3

Snow的并行计算结束后是否需要移除导出的变量?我发现即使调用了 clusterEvalQ,'rsession' 进程的内存也没有太大变化。我怀疑下面的示例代码存在一些内存问题

library(snow)
cl2 <- makeCluster(3, type = "SOCK")
data <- rep(1:10000,10000)

clusterExport(cl2,"data")

# is remove neccssary?
clusterEvalQ(cl2, rm( data, pos=globalenv() ) )  

stopCluster(cl2) 

在此处输入图像描述

4

1 回答 1

1

从集群工作人员中删除导出的数据将释放集群工作人员上的内存,但不会释放主进程上的内存,主进程是您的本地 R 会话。如果您要在不需要该数据的集群上做更多工作,这可能非常有用,但如果您只是要停止集群,则没有任何意义。

当您调用主进程时,主进程上的内存使用可能会增加很多,clusterExport因为它必须序列化所有导出的对象,但它不保留对该内存的任何引用,因此最终应该通过垃圾回收来释放它。你不需要做任何事情,但我同意 mripgc如果你想尽快释放它,你可以打电话。而且我不相信您的示例代码有任何问题。

于 2013-10-26T14:49:24.020 回答