当前位置:  开发笔记 > 编程语言 > 正文

易于并行化

如何解决《易于并行化》经验,为你挑选了2个好方法。

我经常发现自己编写简单的for循环来对许多文件执行操作,例如:

for i in `find . | grep ".xml$"`; do bzip2 $i; done

看起来有点令人沮丧的是,在我的4核机器上只有一个核心被使用..有一种简单的方法可以为我的shell脚本添加并行性吗?

编辑:为我的问题介绍更多的背景,对不起,我开始时并不是更清楚!

我经常想在合理大小的数据集(通常在100到10,000之间)上运行简单(ish)脚本,例如绘制图形,压缩或解压缩,或运行某些程序.我用来解决这些问题的脚本看起来像上面那样,但可能有不同的命令,甚至是一系列要执行的命令.

例如,刚才我正在运行:

for i in `find . | grep ".xml.bz2$"`; do find_graph -build_graph $i.graph $i; done

所以我的问题绝不是特定于bzip的!(虽然并行bzip确实看起来很酷,但我打算将来使用它).



1> Johannes Sch..:

解决方案:使用xargs并行运行(不要忘记-n选项!)

find -name \*.xml -print0 | xargs -0 -n 1 -P 3 bzip2



2> Peter Crabtr..:

这个perl程序可以很好地满足您的需求,您只需这样做:

runN -n 4 bzip2 `find . | grep ".xml$"`

推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有