2013-07-19 94 views
4

我不是很熟悉的bash平行,但我想分手了這段代碼,這樣我可以有12個處理器的服務器上運行它:如何運行循環

#!/bin/bash 
#bashScript.sh 
for i in {1..209} 
do 

Rscript Compute.R $i 

done 

我怎麼會去關於實現這個?

謝謝!

+4

你在linux上嗎?特別是,你有[gnu parallel](http://www.gnu.org/software/parallel/)工具嗎? – Kevin

+0

這個答案可能是相關的:http://stackoverflow.com/questions/6593531/running-a-limited-number-of-child-processes-in-parallel-in-bash –

回答

1

嘗試:

#!/bin/bash 
#bashScript.sh 
for i in {1..209} 
do 

Rscript Compute.R $i & 

done 
+2

這將一次運行所有209個實例,其性能可能比預期的要差...更不用說了,可能內存不足...... – twalberg

4

使用xargs與選項--max-procs-P)。如果有足夠的論據,xargs將使用的正是這種數量的併發進程來處理輸入:

#! /bin/bash 
seq 209 | 
xargs -P12 -r -n1 Rscript Compute.R