运行 并行基于 bash 中文件中的变量
Running parallel based on variables from file in bash
我一直在尝试并行 运行 一个 while-loop 来完成一项需要数天的工作。
我看过其他答案,其中并行是在 while-loop 中实现的,但对于那种情况,它确实以块的形式工作,下一个工作仅在所有先前的工作完成后才工作。
这是代码,它再现了 CSV 文件的两列:
while IFS="," read fq tab
do
echo $fq
echo $tab
done < /home/samples.csv
csv 文件包含两个没有 header 的列(第 1 列和第 2 列),其中存储变量。例如:
a1,b1
a2,b2
a3,b3
a4,b4
我一直在尝试 运行 并行执行此操作,因此当一项工作完成后,另一项工作会立即开始,因为 运行 时间很长。
这是代码:
while IFS="," read fq tab
do
parallel -j 1 --verbose --delay 2 "echo $fq; echo $tab"
done < /home/samples.csv
但这会产生
a1 b1 a1,b1
a1 b1 a2,b2
a1 b1 a3,b3
a1 b1 a4,b4
而不是
a1 b1
a2 b2
a3 b3
a4 b4
cat <<_EOF > samples.csv
a2,b2
a3,b3
a4,b4
_EOF
cat samples.csv | parallel --colsep , echo column 1 = {1} column 2 = {2}
如果samples.csv
是TAB分隔的,;分隔,或用空格分隔:
cat samples.csv | parallel --colsep '\t' echo column 1 = {1} column 2 = {2}
cat samples.csv | parallel --colsep ';' echo column 1 = {1} column 2 = {2}
cat samples.csv | parallel --colsep ' +' echo column 1 = {1} column 2 = {2}
我一直在尝试并行 运行 一个 while-loop 来完成一项需要数天的工作。
我看过其他答案,其中并行是在 while-loop 中实现的,但对于那种情况,它确实以块的形式工作,下一个工作仅在所有先前的工作完成后才工作。
这是代码,它再现了 CSV 文件的两列:
while IFS="," read fq tab
do
echo $fq
echo $tab
done < /home/samples.csv
csv 文件包含两个没有 header 的列(第 1 列和第 2 列),其中存储变量。例如:
a1,b1
a2,b2
a3,b3
a4,b4
我一直在尝试 运行 并行执行此操作,因此当一项工作完成后,另一项工作会立即开始,因为 运行 时间很长。
这是代码:
while IFS="," read fq tab
do
parallel -j 1 --verbose --delay 2 "echo $fq; echo $tab"
done < /home/samples.csv
但这会产生
a1 b1 a1,b1
a1 b1 a2,b2
a1 b1 a3,b3
a1 b1 a4,b4
而不是
a1 b1
a2 b2
a3 b3
a4 b4
cat <<_EOF > samples.csv
a2,b2
a3,b3
a4,b4
_EOF
cat samples.csv | parallel --colsep , echo column 1 = {1} column 2 = {2}
如果samples.csv
是TAB分隔的,;分隔,或用空格分隔:
cat samples.csv | parallel --colsep '\t' echo column 1 = {1} column 2 = {2}
cat samples.csv | parallel --colsep ';' echo column 1 = {1} column 2 = {2}
cat samples.csv | parallel --colsep ' +' echo column 1 = {1} column 2 = {2}