相信对于经常编写shell脚本的人来说,利用for语句对一批任务进行批量、串行处理是小菜一碟,不过有时候我们希望能够对一批任务进行批量、并行地运行任务,从而最大程度发挥多核CPU的优势,这时候如何优雅地、不借助额外工具来达成这一“并行”效果呢?其实可以巧妙地借用makefile文件,用make命令来实现“并行、批量”执行的操作。在此感谢邹神(jxzou)提供的批量并行的解决思路。
脚本获取方式:
链接:https://pan.baidu.com/s/1M7BEKcygKye4JmcutUZ5ZQ
提取码:dp28
这里举个使用该脚本的范例:
在文件夹中有多个*.a文件,想利用bash批量、并行运行*.a文件。*.a文件内容如下:
echo "hello~"
sleep 5
那么,我们可以先收集多个*.a文件所在位置信息,生成makefile文件,最后利用诸如
make -f parallel_run.make -j8
命令,来借用makefile容器进行并行处理。
parallel_run.make内容如下:
all: w1 w2 w3 w4 w5 w6 w7 w8 w9
w1:
bash /mnt/e/parallel_run/1/1.a > /mnt/e/parallel_run/1/1.log 2>&1
w2:
bash /mnt/e/parallel_run/1/4/4.a > /mnt/e/parallel_run/1/4/4.log 2>&1
w3:
bash /mnt/e/parallel_run/2/2.a > /mnt/e/parallel_run/2/2.log 2>&1
w4:
bash /mnt/e/parallel_run/2/5/5.a > /mnt/e/parallel_run/2/5/5.log 2>&1
w5:
bash /mnt/e/parallel_run/3/3.a > /mnt/e/parallel_run/3/3.log 2>&1
w6:
bash /mnt/e/parallel_run/3/5/5.a > /mnt/e/parallel_run/3/5/5.log 2>&1
w7:
bash /mnt/e/parallel_run/3/5/4/4.a > /mnt/e/parallel_run/3/5/4/4.log 2>&1
w8:
bash /mnt/e/parallel_run/4/4.a > /mnt/e/parallel_run/4/4.log 2>&1
w9:
bash /mnt/e/parallel_run/5/5.a > /mnt/e/parallel_run/5/5.log 2>&1
file_extension="a" # the *.$file_extension file to be executed
num_cpu=6 # number of CPU cores to be used
command='bash' # input command here
页面更新:2024-05-13
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号