R大内存:脚本执行后如何访问矩阵/保存在共享内存中

xkftehaa  于 2023-01-18  发布在  其他
关注(0)|答案(2)|浏览(128)

我使用bigmemory包将一个非常大的矩阵放到共享内存中(请参见下面的脚本,这样它就可以被其他R会话中的脚本并行访问。
现在我想以非交互方式执行脚本。问题是,如果我用Rscript运行它,矩阵会在Rscript进程结束后立即从共享内存中删除。我可以将Sys.sleep(99999)添加到脚本末尾,但我想知道是否有更好的方法来实现这一点。有什么想法吗?

library(bigmemory)

m = read.big.matrix("matrix.txt", type='double', shared = TRUE, header = FALSE, sep = "\t")

sign = describe(m)
dput(sign, "matrix.signature")
e4eetjau

e4eetjau1#

如果磁盘上有描述符sign,则可以在另一个会话中使用attach.big.matrix()

m <- attach.big.matrix("matrix.signature")
igetnqfo

igetnqfo2#

只要矩阵连接到至少一个R会话中,它就会保留在RAM的一个隔离部分中。防止矩阵丢失的最佳做法是将其归档。这不会影响性能,但您必须注意,在硬盘驱动器上的指定位置,这些数据会一直驻留在那里,直到你显式地删除它们。2即使关闭所有的R会话也不会删除它们。3在这种情况下终结器是不活动的。

相关问题