iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >如何使用parallel利用起你的所有CPU资源
  • 489
分享到

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

2023-06-16 12:06:17 489人浏览 薄情痞子
摘要

这篇文章主要介绍了如何使用parallel利用起你的所有CPU资源,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。bash 命令通常单线程运行。这意味着所有的处理工作只在单个

这篇文章主要介绍了如何使用parallel利用起你的所有CPU资源,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

bash 命令通常单线程运行。这意味着所有的处理工作只在单个 CPU 上执行。随着 CPU 规模的扩大以及核心数目的增加,这意味着只有一小部分的 CPU 资源用于处理你的工作。

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

本文中,我们将会使用 parallel 程序。parallel 会接受一个列表作为输入,然后在所有 CPU 核上并行地执行命令来处理该列表。Parallel 甚至会按顺序将结果输出到标准输出中,因此它可以用在管道中作为其他命令的标准输入。

如何使用 parallel

parallel 在标准输入中读取一个列表作为输入,然后创建多个指定命令的进程来处理这个列表,其格式为:

list | parallel command

这里的 list 可以由任何常见的 bash 命令创建,例如:catgrepfind。这些命令的结果通过管道从它们的标准输出传递到 parallel 的标准输入,像这样:

find . -type f -name "*.log" | parallel

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

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

下面这些实际的使用 parallel 的例子可能会更容易理解一些。

使用 parallel 来进行 JPEG 压缩

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

下面是一个普通的 find 命令,用来找出当前目录中的所有 .jpg 文件,然后通过 MozJPEG 包中提供的图像压缩工具 (cjpeg) 对其进行处理:

find . -type f -name "*.jpg" -exec cjpeg -outfile LoRes/{} {} ';'

总共耗时 0m44.114s

虽然有 8 个核可用,但实际只有单个线程在用单个核。

下面用 parallel 来运行相同的命令:

find . -type f -name "*.jpg" | parallel cjpeg -outfile LoRes/{} {}

这次压缩所有图像的时间缩减到了 0m10.814s。从 top 显示中可以很清楚地看出不同:

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

所有 CPU 核都满负荷运行,有 8 个线程对应使用 8 个 CPU 核。

parallel 与 gzip 连用

如果你需要压缩多个文件而不是一个大文件,那么 parallel 就能用来提高处理速度。如果你需要压缩单个文件而同时又想要利用所有的 CPU 核的话,那么你应该 gzip多线程替代品 pigz。

首先,我用随机数据创建了 100 个大约 1GB 的文件:

for i in {1..100}; do dd if=/dev/urandom of=file-$i bs=1MB count=10; done

然而我用 find -exec 命令来进行压缩:

find . -type f -name "file*" -exec gzip {} ';'

总共耗时 0m28.028s,而且也是只利用了单核。

换成 parallel 版本:

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

耗时减少到了 0m5.774s

感谢你能够认真阅读完这篇文章,希望小编分享的“如何使用parallel利用起你的所有CPU资源”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网精选频道,更多相关知识等着你来学习!

--结束END--

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

本文链接: https://www.lsjlt.com/news/283607.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何使用parallel利用起你的所有CPU资源
    这篇文章主要介绍了如何使用parallel利用起你的所有CPU资源,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。bash 命令通常单线程运行。这意味着所有的处理工作只在单个 ...
    99+
    2023-06-16
  • linux如何罗列使用CPU资源最多的linux任务
    ...
    99+
    2024-04-02
  • 教你如何免费使用aws的服务器资源
    AWS - 亚马逊公司旗下云计算服务平台 之前有幸参加了aws培训学习,现在给大家介绍一些aws的使用方法 本文介绍先介绍如何在aws免费使用aws的服务器资源 1.注册/登陆 官网...
    99+
    2024-04-02
  • Android中如何使用Drawbl资源
    这篇文章将为大家详细讲解有关Android中如何使用Drawbl资源,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Drawble是Android应用中使用最灵活,也是最广泛的资源,不仅可以直...
    99+
    2023-06-04
  • web资源如何利用ServletContext类进行获取
    web资源如何利用ServletContext类进行获取?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。ServletContext类中有这么四个方法:getRe...
    99+
    2023-05-31
    servletcontext web
  • 如何使用profile来限制用户的资源
    小编给大家分享一下如何使用profile来限制用户的资源,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!创建限制profile:#...
    99+
    2024-04-02
  • 自定义资源CRD如何使用
    今天小编给大家分享一下自定义资源CRD如何使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。介绍Custom Resourc...
    99+
    2023-06-30
  • C#如何使用Resources资源文件
    这篇文章主要讲解了“C#如何使用Resources资源文件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#如何使用Resources资源文件”吧!一、创建资源文件可以将字符串、图像或对象数...
    99+
    2023-07-02
  • LeetCode算法如何优化容器的资源利用率?
    随着云计算的普及,容器技术成为了应用部署的重要手段。但是,容器的资源利用率一直是个难题。LeetCode算法提供了一些优化方法,可以帮助我们更好地利用容器资源。 一、使用滑动窗口算法 滑动窗口算法是一种常用的优化方法,可以在很短的时间内处...
    99+
    2023-06-13
    分布式 leetcode 容器
  • MobaXterm监控服务器的资源(CPU、RAM、Network、disk...) 使用情况
    使用服务器的时候比较喜欢随时查看的服务器资源使用情况,比如内存,CPU,网速,磁盘使用等情况,一次偶然的机会发现了MobaXterm提供有这项功能,在会话窗口底部: 完整窗口示意图 如果你发现你的...
    99+
    2023-09-14
    服务器 ssh 运维
  • openSUSE中如何监控系统资源利用情况
    在openSUSE中,可以使用以下工具来监控系统资源利用情况: GNOME System Monitor:这是一个图形化的系统监...
    99+
    2024-04-02
  • 如何编写自动杀掉占用较多CPU资源的Shell脚本
    本篇内容主要讲解“如何编写自动杀掉占用较多CPU资源的Shell脚本”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何编写自动杀掉占用较多CPU资源的Shell脚本”吧!代码如下:#!/bin/...
    99+
    2023-06-09
  • 如何利用K8S技术进行K8S资源控制
    如何利用K8S技术进行K8S资源控制,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。私有云K8S资源控制原理基于前面系列文章的详细阐述,我们已经可以手工去K8S集群的命令行下将C...
    99+
    2023-06-19
  • OpenBSD中如何监控系统资源利用情况
    在OpenBSD中,可以使用一些内置的工具来监控系统资源利用情况,包括: top命令:top命令可以显示当前系统中运行的进程列表...
    99+
    2024-04-02
  • 如何利用Vue3+Vite批量导入模块/资源
    目录前言1,前置基础知识 - JavaScript模块化编程(1) export语句 - 暴露函数和变量使外部调用(2) import语句 - 导入变量/函数并使用(3) impor...
    99+
    2024-04-02
  • 如何使用 Python 请求网络资源
    很长时间以来我们都在分享 Linux 系统相关的知识,所以可能会有朋友误以为我们只分享 Linux 操作相关的东西,其实不是啊,我们在平时开发过程中遇到的一些问题,感觉可以总结的,都有可能拿来分享。最近在写一个定时访问网络资源的程序,里面涉...
    99+
    2023-05-14
    Python 网络资源
  • 如何使用PreloadJS加载图片资源
    这篇文章主要介绍如何使用PreloadJS加载图片资源,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一. 使用createjs里的LoadQueue函数实现异步加载图片,监听加载进度...
    99+
    2024-04-02
  • Linux下如何查看哪些进程占用的CPU内存资源最多
    转自:https://www.cnblogs.com/sparkbj/p/6148817.htmllinux下获取占用CPU资源最多的10个进程,可以使用如下命令组合:ps aux|head -1;ps aux|grep -v PID|so...
    99+
    2023-06-06
  • 如何利用Redis和Haskell实现资源限制功能
    如何利用Redis和Haskell实现资源限制功能在现代的网络应用中,对于资源的管理和限制是非常重要的。资源限制可以确保服务器的稳定性,防止滥用和恶意行为。本文将介绍如何利用Redis和Haskell实现资源限制功能,并提供具体的代码示例。...
    99+
    2023-10-22
    redis Haskell 资源限制
  • windows中没有权限使用网络资源如何解决
    这篇“windows中没有权限使用网络资源如何解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“windows中没有权限使用...
    99+
    2023-07-01
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作