美文网首页
【并行】【转载】gun parallel

【并行】【转载】gun parallel

作者: Silver_42ac | 来源:发表于2019-10-08 00:11 被阅读0次

原网站:
Parallel并行命令加速执行#原始网址失效
Parallel并行命令加速执行

还是值得学习下,目前还没熟悉,每天看一看吧,实际多应用

GNU Parallel会把输入分块,然后通过管道并行的执行;

BZIP2
bzip2是比gzip更好的压缩工具,但它很慢!别折腾了,我们有办法解决这问题。

以前的做法:

`cat` `bigfile.bin |` `bzip2` `--best > compressedfile.bz2`

现在这样:
`cat` `bigfile.bin | parallel --pipe --recend` `''` `-k` `bzip2` `--best > compressedfile.bz2`

GREP

如果你有一个非常大的文本文件,以前你可能会这样:

`grep` `pattern bigfile.txt`

现在你可以这样:

`cat` `bigfile.txt | parallel --pipe` `grep` `'pattern'`
或者这样:
`cat` `bigfile.txt | parallel --block 10M --pipe` `grep` `'pattern'`

这第二种用法使用了 –block 10M参数,这是说每个内核处理1千万行——你可以用这个参数来调整每个CUP内核处理多少行数据。

AWK

下面是一个用awk命令计算一个非常大的数据文件的例子。

常规用法:

`cat` `rands20M.txt |` `awk` `'{s+=$1} END {print s}'`

现在这样:

`cat` `rands20M.txt | parallel --pipe` `awk` `\``'{s+=\$1} END {print s}\' | awk '``{s+=$1} END {print s}'`

这个有点复杂:parallel命令中的–pipe参数将cat输出分成多个块分派给awk调用,形成了很多子计算操作。这些子计算经过第二个管道进入了同一个awk命令,从而输出最终结果。第一个awk有三个反斜杠,这是GNU parallel调用awk的需要。

WC

想要最快的速度计算一个文件的行数吗?

传统做法:

`wc` `-l bigfile.txt`

现在你应该这样:

`cat` `bigfile.txt | parallel --pipe` `wc` `-l |` `awk` `'{s+=$1} END {print s}'`

非常的巧妙,先使用parallel命令‘mapping'出大量的wc -l调用,形成子计算,最后通过管道发送给awk进行汇总。

SED
想在一个巨大的文件里使用sed命令做大量的替换操作吗?

常规做法:

`sed` `s^old^new^g bigfile.txt`

现在你可以:

`cat` `bigfile.txt | parallel --pipe` `sed` `s^old^new^g`

然后你可以使用管道把输出存储到指定的文件里。

使用 –no-run-if-empty 来跳过空行:

`(``echo` `1;` `echo``;` `echo` `2) | parallel --no-run-``if``-empty` `echo`

相关文章

网友评论

      本文标题:【并行】【转载】gun parallel

      本文链接:https://www.haomeiwen.com/subject/edeguctx.html