2014-02-27 47 views
0

我有一个嵌套for循环,其中我运行了一个使用R中系统调用选项的python脚本,我发现我的代码的所有执行时间都花在系统调用上,以便运行python脚本,所以我想知道是否有任何技巧可以用来节省重复使用系统调用所花费的时间,特别是导致python脚本本身每次调用只花费1秒,问题是因为我是一个使用由R.等部位产生一些参数这里是我的代码的快照和任何建议是高度赞赏我不能独立运行的.py脚本:R中的快速系统调用

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

该问题与R无关。需要花时间的是启动python脚本。你应该做什么?修改python脚本以便一次输入更多信息,或者在R –

+1

中实现它即使每次呼叫只需要1秒,1e8呼叫也需要3年左右的时间。 – Roland

回答

0

目前尚不清楚什么钙。 py确实。它似乎并没有采取依赖于x和y的任何参数,所以这应该工作(除非你已经离开了关键的知识):

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

如果计算依赖于x和y,但每个计算不彼此依赖(即你不需要从以前的计算结果做下),那么你应该能够做一些事情,如:

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年。