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

bash 敕令平日单线程运行。这意味着所有的处理工作只在单个 CPU 上履行。跟着 CPU 范围的扩大年夜以及核心数量标增长,这意味着只有一小部分的 CPU 资本竽暌姑于处理你的工作。
当我们的工作受制于 CPU 处理数据的速度时,这些未应用的 CPU 资本能产生很大年夜的效用。这种情况在进行多媒体转换(比如图片和视频转换)以及数据紧缩中经常碰到。
本文中,我们将会应用 parallel 法度榜样。parallel 会接收一个列表作为输入,然后在所有 CPU 核上并行地履行敕令来处理该列表。Parallel 甚至会按次序将结不雅输出到标准输出中,是以它可以用在管道中作为其他敕令的标准输入。
若何应用 parallel
parallel 在标准输入中攫取一个列表作为输入,然后创建多个指天敕令的过程来处理这个列表,其格局为:
find . -type f -name "*.jpg" -exec cjpeg -outfile LoRes/{} {} ';'
list | parallel command
这里的 list 可以由任何常见的 bash 敕令创建,例如:cat、grep、find。这些敕令的结不雅经由过程管道大年夜它们的标准输出传递到 parallel 的标准输入,像如许:
【编辑推荐】
- 用体系日记懂得你的Linux体系
- 嵌入式Linux体系在线进级策略
- Linux之HA高可用集群的基本概念总结
- 说了这么久的“ Linux桌面年”,为什么还没来?
- 39条常见的Linux体系简单面试题
find . -type f -name "*.log" | parallel
跟 find 中应用 -exec 类似,parallel 应用 {} 来表示输入列表中的每个元素。下面这个例子中,parallel 会应用 gzip 紧缩所有 find 敕令输出的文件:
find . -type f -name "*.log" | parallel gzip {}
在这个例子中,我收集了一些比较大年夜的 .jpg 文件(大年夜约 10MB 大年夜小),要用 Mozilla 出品的 JPEG 图像紧缩对象 MozJPEG 来进行处理。该对象会在测验测验保持图像质量的同时削减 JPEG 图像文件的大年夜小。这对降低网页加载时光很重要。
下面是一个通俗的 find 敕令,用来找出当前目次中的所有 .jpg 文件,然后经由过程 MozJPEG 包中供给的图像紧缩对象 (cjpeg) 对其进行处理:
总共耗时 0m44.114s。该敕令运行时的 top 看起来是如许的:

你可以看到,固然有 8 个核可用,但实际只有单个线程在用单个核。
下面用 parallel 来运行雷同的敕令:

网友点评
精彩导读
科技快报
品牌展示