一些 GNU/Linux 命令行程序(例如“oggenc”,以 ogg vorbis 格式编码音频)仅使用 CPU 的所有内核中的 1 个。
问题是,就我而言,我有 4 个内核,而程序只使用 1 个内核,使 CPU 以 25% 的速度运行(只有一个内核以 100% 的速度运行,但其他 3 个内核以 0% 的速度运行)那个任务)。

是否可以强制为命令行程序使用更多内核?

处理诸如 zip、tar、oggenc 等任务会很棒。

PS:我找到了一个名为“并行”的程序,但我没有实现如何使其正常工作...... :(

最佳答案

使用 GNU Parallel,您可以:

parallel gzip ::: *
parallel opusenc {} {.}.opus ::: *.wav

GNU Parallel 是一个通用的并行器,可以很容易地在同一台机器或您可以 ssh 访问的多台机器上并行运行作业。

如果您有 32 个不同的作业要在 4 个 CPU 上运行,一个直接的并行化方法是在每个 CPU 上运行 8 个作业:

GNU Parallel 会在完成后生成一个新进程 - 保持 CPU 处于事件状态,从而节省时间:

安装

出于安全原因,您应该使用您的包管理器安装 GNU Parallel,但如果 GNU Parallel 没有为您的发行版打包,您可以进行个人安装,这不需要 root 访问权限。这样做可以在 10 秒内完成:
(wget -O - pi.dk/3 || curl pi.dk/3/ || fetch -o - http://pi.dk/3) | bash

有关其他安装选项,请参阅 http://git.savannah.gnu.org/cgit/parallel.git/tree/README

了解更多

查看更多示例:http://www.gnu.org/software/parallel/man.html

观看介绍视频:https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

演练教程:http://www.gnu.org/software/parallel/parallel_tutorial.html

注册电子邮件列表以获得支持:https://lists.gnu.org/mailman/listinfo/parallel

关于linux - GNU/Linux 命令行中的并行处理,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44524480/

10-13 08:30