我不是很熟悉的bash平行,但我想分手了這段代碼,這樣我可以有12個處理器的服務器上運行它:如何運行循環
#!/bin/bash
#bashScript.sh
for i in {1..209}
do
Rscript Compute.R $i
done
我怎麼會去關於實現這個?
謝謝!
我不是很熟悉的bash平行,但我想分手了這段代碼,這樣我可以有12個處理器的服務器上運行它:如何運行循環
#!/bin/bash
#bashScript.sh
for i in {1..209}
do
Rscript Compute.R $i
done
我怎麼會去關於實現這個?
謝謝!
嘗試:
#!/bin/bash
#bashScript.sh
for i in {1..209}
do
Rscript Compute.R $i &
done
這將一次運行所有209個實例,其性能可能比預期的要差...更不用說了,可能內存不足...... – twalberg
使用xargs
與選項--max-procs
(-P
)。如果有足夠的論據,xargs
將使用的正是這種數量的併發進程來處理輸入:
#! /bin/bash
seq 209 |
xargs -P12 -r -n1 Rscript Compute.R
使用GNU並行:
parallel Rscript Compute.R ::: {1..209}
拆裝硬盤:
wget -O - pi.dk/3 | sh
關注簡介視頻快速介紹: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1
你在linux上嗎?特別是,你有[gnu parallel](http://www.gnu.org/software/parallel/)工具嗎? – Kevin
這個答案可能是相關的:http://stackoverflow.com/questions/6593531/running-a-limited-number-of-child-processes-in-parallel-in-bash –