巧妙利用make命令批量并行运行任务的小脚本

相信对于经常编写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 executednum_cpu=6 # number of CPU cores to be usedcommand='bash' # input command here

下面是脚本运行过程中的输出信息:

展开阅读全文

页面更新:2024-05-13

标签:多核   批量   脚本   命令   小菜   范例   所在位置   巧妙   文件   内容   信息

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top