【发布时间】:2017-08-16 19:16:54
【问题描述】:
我必须在我的服务器中处理一个数据集,并使用不同的参数。
这是我正在做的一个虚拟示例
if (!require("pacman")) install.packages("pacman")
p_load(dplyr,DBI)
mtcars_experiments = dbConnect(RSQLite::SQLite(), "mtcars_experiments.sqlite")
for(a in -1:1) {
for(b in -1:1) {
for(c in -1:1) {
mtcars_experiment = mtcars %>%
mutate(my_col = mpg^a + cyl^b + disp^c)
dbWriteTable(mtcars_experiments, paste("mtcars_experiment",a,b,c, sep = "_"), mtcars_experiment)
}
}
}
我知道 for 循环有时效率低下,但就我而言,我不想以最大速度计算它。
我正在尝试找到一种既不那么慢又不那么快的方法,因为如果我在并行化中使用太多资源,那么服务器的其他用户在运行他们自己的代码时会遇到问题。
在这种情况下我该怎么办?如何进行有界并行化等?
谢谢!
【问题讨论】:
-
我认为您可以使用适当的
--max-mem-size从命令行启动 R -
我不确定我理解你想要什么。为什么不只是尽可能快地进行计算,以便快速将资源留给其他人?
-
@d.b 我希望但我没有权限这样做
-
@F.Privé 这样做是不允许的,因为实际上有进程正在运行并且干扰它是粗鲁的
标签: r loops parallel-processing