作家
登录

使用parallel 利用起你的所有CPU资源

作者: 来源: 2017-12-25 11:03:20 阅读 我要评论

【限时免费】岁尾最强一次云计算大年夜会,看传统、社区、互联网企业若何碰撞?


应用parallel 应用起你的所有CPU资本

bash 敕令平日单线程运行。这意味着所有的处理工作只在单个 CPU 上履行。跟着 CPU 范围的扩大年夜以及核心数量标增长,这意味着只有一小部分的 CPU 资本竽暌姑于处理你的工作。

当我们的工作受制于 CPU 处理数据的速度时,这些未应用的 CPU 资本能产生很大年夜的效用。这种情况在进行多媒体转换(比如图片和视频转换)以及数据紧缩中经常碰到。

本文中,我们将会应用 parallel 法度榜样。parallel 会接收一个列表作为输入,然后在所有 CPU 核上并行地履行敕令来处理该列表。Parallel 甚至会按次序将结不雅输出到标准输出中,是以它可以用在管道中作为其他敕令的标准输入。

若何应用 parallel

parallel 在标准输入中攫取一个列表作为输入,然后创建多个指天敕令的过程来处理这个列表,其格局为:

  1. find . -type f -name "*.jpg" -exec cjpeg -outfile LoRes/{} {} ';'
  1. list | parallel command

这里的 list 可以由任何常见的 bash 敕令创建,例如:catgrepfind。这些敕令的结不雅经由过程管道大年夜它们的标准输出传递到 parallel 的标准输入,像如许:

【编辑推荐】

  1. 用体系日记懂得你的Linux体系
  2. 嵌入式Linux体系在线进级策略
  3. Linux之HA高可用集群的基本概念总结
  4. 说了这么久的“ Linux桌面年”,为什么还没来?
  5. 39条常见的Linux体系简单面试题
【义务编辑:庞桂玉 TEL:(010)68476606】
  1. find . -type f -name "*.log" | parallel

find 中应用 -exec 类似,parallel 应用 {} 来表示输入列表中的每个元素。下面这个例子中,parallel 会应用 gzip 紧缩所有 find 敕令输出的文件:

  1. find . -type f -name "*.log" | parallel gzip {}

在这个例子中,我收集了一些比较大年夜的 .jpg 文件(大年夜约 10MB 大年夜小),要用 Mozilla 出品的 JPEG 图像紧缩对象 MozJPEG 来进行处理。该对象会在测验测验保持图像质量的同时削减 JPEG 图像文件的大年夜小。这对降低网页加载时光很重要。

下面是一个通俗的 find 敕令,用来找出当前目次中的所有 .jpg 文件,然后经由过程 MozJPEG 包中供给的图像紧缩对象 (cjpeg) 对其进行处理:

总共耗时 0m44.114s。该敕令运行时的 top 看起来是如许的:

你可以看到,固然有 8 个核可用,但实际只有单个线程在用单个核。

下面用 parallel 来运行雷同的敕令:

  1. find . -type f -name "*.jpg"

      推荐阅读

      视频市场竟如此暴利,你知道吗?

    互联网视频流量毕竟有多大年夜?视频类B端企业每年要消费若干成本?为什么会有这么高的成本?今天图鸭君就和大年夜家来谈一>>>详细阅读


    本文标题:使用parallel 利用起你的所有CPU资源

    地址:http://www.17bianji.com/lsqh/40129.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)