我正在寻找一种简单的“设置后就忘记它”的方式,无论是作为终端中的单个参数字符串还是简单的 Java 程序,来自动执行以下操作:
1)启动R会话
2) 告诉 R 源 .R 文件包含冗长的并行模拟代码
3) 完成后终止R会话
4)开始一个新的R会话
5) 告诉 R 获取其他 .R 文件
6) 完成后终止R会话
7)起泡,冲洗,重复
我的 .R 脚本总共需要几天的时间才能运行,在此期间我将出城并且无法检查它们,如果我在同一个会话中运行它们,那么我就无法避免最大化我的可用内存。
Thanks!
编辑:我在 Ubuntu 12.04 LTS 上运行 R 2.15.3,具有 16GB RAM
启动和终止 R 会话的过程是通过使用来处理的Rscript
。所以编写你的脚本,像这样调用它们:
Rscript script_1.R
Rscript script_2.R
...
Rscript script_Inf.R
剩下第 2 点和第 5 点...这是一个简单的问题:
source('/home/sc_evans/script_abc.R')
...在任何脚本的开头。
每个脚本都会有自己的 R 会话,该会话将在完成后终止。将这些命令放入批处理脚本中并运行它。
EDIT
如果我自己这样做,我会忘记使用单独的脚本。只要您正确管理内存,运行单个进程就应该可以正常工作。将您的流程划分为适当的功能:
massive_process_1 <- function() {
x <- do_something()
saveRDS(x, '/home/sc_evans/results/first_result.rds')
}
massive_process_2 <- function() {
x <- do_something()
saveRDS(x, '/home/sc_evans/results/second_result.rds')
}
massive_process_1()
massive_process_2()
等等。在第一个函数完成之前,下一个函数不会运行,并且您的对象应该在函数中消亡,因此您不应该耗尽内存。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)