首页 > 解决方案 > 如何限制或改进执行 CPU 密集型终端命令的节点脚本

问题描述

不知道怎么问这个。我编写了一个在我的计算机上运行的 nodejs 脚本,它调用了一些 CPU 密集型进程(sox 和 ffmpeg)以及其中的很多。直到某一点,一切都很好,但一旦它变得太重,事情就会开始崩溃。

我想知道如何改进这样的事情?我是初学者,但我尝试了一些东西。我尝试过使用setTimeouts,但我不确定这是否真的有帮助,或者它是否只是在我的脚本上增加了更多的工作。我也尝试过在 nodejs 中搜索有关去抖动/节流的内容,但我只找到与 API 请求相关的内容。

标签: javascriptnode.jscputhrottlingsox

解决方案


除非您有数百个 CPU 内核,否则同时运行数百个 CPU 密集型进程(如 sox 和 ffmpeg)是没有意义的。为了给每个进程公平的 CPU 份额,这会导致过多的进程切换,这会带来自己的开销。

如果您将进程数限制为内核数,您的程序将更快地完成并使系统更可用。例如,如果您有 8 个内核,则最初启动 8 个进程,然后在其中一个完成后立即启动下一个进程。


推荐阅读