2014-02-27 48 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年。