zoukankan      html  css  js  c++  java
  • 分享一个linux环境下快速读取行数的命令

    最初是因为我需要计算一天的日志行数,如果用传统意义上的cat  a.log |wc -l的话因为是单线程,所以需要计算半小时的样子,后来同组的小伙伴教了我一个方法可以有效提高计算速度,将计算时间减半。命令就是这个 cat a.log |parallel --pipe wc -l |awk '{a+=$1}END{print a}',使用了所有的CPU内核,快速提高了计算速度。蕴含map-reduce思想,将原本大的任务,分散成多个小任务,之后再将结果reduce到一起。

    下面网址是我找到的这个命令的相关拓展信息的网址:

    http://linux.cn/article-2188-1.html

    ----------------------------------------------------------------------

    以下是我本人的疑问:

    想要让Linux命令使用所有的CPU内核,需要用到GNU parallel命令,它让我们所有的CPU内核在淡季内做map-reduce操作。同时,这还需要借助--pipe(管道)参数,这样负载会平均分配到各CPU上。

    举例:

    grep

    如果有一个非常大的文件,你想要匹配某个单词,一般的办法是这样:grep pattern a.txt

    知道这个方法后,你可以这样:cat a.txt |parallel --pipe grep 'pattern'

    或者这样:cat a.txt |parallel --block 10M --pipe grep 'pattern'(这个好厉害,使用了--block 10M参数,也就是说每个内核处理1千万行——你可以使用这个参数来调整每个CPU内核处理多少数据。)--不懂?为什么是1千万行,难道不是10MB一个批次去处理么?

  • 相关阅读:
    python面试题之生成器迭代器
    python之初识函数二
    Python之初识函数一
    Python初识之文件操作
    python初识三
    python初识二
    python初识一
    2.15.5.menuconfig的使用和演示
    2.15.4.内核的配置原理1
    2.15.3.内核配置和编译体验
  • 原文地址:https://www.cnblogs.com/cyfighting/p/4637108.html
Copyright © 2011-2022 走看看