网站地图    收藏   

主页 > 系统 > linux系统 >

GNUParallel:并行执行Linux命令 - Linux操作系统:Ubu

来源:自学PHP网    时间:2015-04-14 10:17 作者: 阅读:

[导读] 今天在Stack Overflow上看到一个很有趣的问题, 问题的大意是: 需要用一个脚本处理一个文本文件, 但这个文本文件可能很大, 由于处理脚本的问题, 希望每次能够只处理该文本文件的若干行...

今天在Stack Overflow上看到一个很有趣的问题, 问题的大意是:

需要用一个脚本处理一个文本文件, 但这个文本文件可能很大, 由于处理脚本的问题, 希望每次能够只处理该文本文件的若干行, 就像 xargs 一样, 而且不能使用split来分割文件, 也不允许生成临时文件.

如果允许使用临时文件的话, 那么用bash script并不难实现, 若不能使用临时文件, 那么可以使用GNU Parallel工具来实现. 实现的方法如下:

cat giantfile.txt | parallel -j 8 --pipe -L 50000 import_script
-j 8 : 表示并行jobs的数量, 不想并行执行可以设置为 1. 也可以不加 -j 选项, 则默认为每个CPU核运行一个job.

--pipe: 表示从stdin 读取一块数据, 并将每块数据分给各个jobs

-L N: 一次最多读取N行数据

这里有一篇 parallel 的教程: http://www.gnu.org/software/parallel/parallel_tutorial.html

这是翻译版本: http://my.oschina.net/enyo/blog/271612

这里介绍了一些 parallel 与其他 Linux 命令一起使用的例子: http://www.vaikan.com/use-multiple-cpu-cores-with-your-linux-commands/

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论