我不熟悉python。我想为以下伪代码并行化外部for循环:
for(i=1 to N){ // N and n will be taken as input for the shell script.
min=some garbage value
for(j=1 to n){
val= './a.out' // call the executable a.out and take the output in val
if(val<min) // a.out is a random number generator script
min=val;
}
arr[k++]=min;
}
// Then I want to calculate the sum of the elements of the array 'arr'.
我尝试使用shell脚本如下。但N可能非常大。所以,我需要使用 多线程以并行化外部for循环。
#!/bin/bash
# set min to some garbage value
N=$1
n=$2
for (( i=1; i<=$N; i++ )); do
min=100000000
for (( j=1; j<=$n; j++ )); do
val=$(/path/to/a.out)
val2=`echo $val | bc` // is this the correct syntax?
if (( $val2 < $min )); then
min=$val2;
fi
done
arr=("${arr[@]}" "$min")
done
# Then I want to calculate the sum of the elements of the array 'arr'.
sum=0
for (( l=0; l<${#arr[@]}; l++ )); do
sum=$( expr $sum + ${arr[$l]} )
done
echo "Sum of \$arr = ${sum}"
答案 0 :(得分:0)
我正在回答这个问题以供将来参考,尽管我同意其他海报提出的关于并行化是否是遵循这个具体例子的正确道路的担忧。
要使用线程并行化一个简单的for循环,您当然可以使用threading module。另外,joblib在它们之上带来了更简单的语法(小心将其切换到线程后端)。
免责声明:我是joblib的原作者。