小编f10*_*10w的帖子

BASH:并行运行

我有一个 bash 脚本,它接受三个长度相等的数组作为输入:METHODSINFILESOUTFILES

该脚本将解决所有索引( ) 的METHODS[i]问题INFILES[i]并将结果保存到。OUTFILES[i]i0 <= i <= length-1

中的每个元素METHODS都是以下形式的字符串:

$HOME/program/solver -a <method>
Run Code Online (Sandbox Code Playgroud)

其中solver是一个程序,可以按如下方式调用:

$HOME/program/solver -a <method> -m <input file> -o <output file> --timeout <timeout in seconds>

该脚本并行解决所有问题,并将每个实例的运行时间限制设置为 1 小时(但有些方法可以很快解决某些问题),如下所示:

#!/bin/bash
source METHODS
source INFILES
source OUTFILES

start=`date +%s`

## Solve in PARALLEL
for index in ${!OUTFILES[*]}; do 
    (alg=${METHODS[$index]}
    infile=${INFILES[$index]}
    outfile=${OUTFILES[$index]}

    ${!alg}  -m $infile -o $outfile --timeout 3600) &
done
wait


end=`date +%s` …
Run Code Online (Sandbox Code Playgroud)

bash parallelism gnu-parallel

5
推荐指数
1
解决办法
1251
查看次数

标签 统计

bash ×1

gnu-parallel ×1

parallelism ×1