R中的快速系统调用

时间:2014-02-27 09:23:27

标签: python r parallel-processing

我有一个用于循环的嵌套在其中我使用R中的系统调用选项运行python脚本,我发现我的代码的所有执行时间都花在系统调用上以便运行python脚本,所以我想知道是否有任何技巧我可以用来节省重复使用系统调用所花费的大量时间特别是因为python脚本本身每次调用只需要1秒,问题是我无法运行.py脚本独立地导致我使用R中其他部分生成的一些参数。这是我的代码的快照,并且非常感谢任何建议:

 for(x in 1:10000){
    .......
    for (y in 1:10000){
    .....
    x=system("python calc.py -c1 -c2",intern = TRUE)
    }
    }

1 个答案:

答案 0 :(得分:0)

目前尚不清楚calc.py的作用。它似乎没有任何依赖于x和y的参数,所以这应该有用(除非你遗漏了关键知识):

x=system("python calc.py -c1 -c2",intern = TRUE)
for(x in 1:10000){
  .......
  for (y in 1:10000){
    .....
  }
}

如果计算取决于x和y,但每次计算不依赖于彼此(即你不需要先前计算的结果来做下一次计算),那么你应该能够做类似的事情: / p>

for(x in 1:10000){
  .......
  for (y in 1:10000){
    .....
    push(mystack, c(x, y));
  }
}
save_arg_file("argfile",mystack)
z <- system("cat argfile | parallel calc.py -c1 -c2", intern = TRUE)

通过这种方式,您可以并行计算,因此运行速度比3年快。