javascript - 如何限制或改进执行 CPU 密集型终端命令的节点脚本
问题描述
不知道怎么问这个。我编写了一个在我的计算机上运行的 nodejs 脚本,它调用了一些 CPU 密集型进程(sox 和 ffmpeg)以及其中的很多。直到某一点,一切都很好,但一旦它变得太重,事情就会开始崩溃。
我想知道如何改进这样的事情?我是初学者,但我尝试了一些东西。我尝试过使用setTimeouts
,但我不确定这是否真的有帮助,或者它是否只是在我的脚本上增加了更多的工作。我也尝试过在 nodejs 中搜索有关去抖动/节流的内容,但我只找到与 API 请求相关的内容。
解决方案
除非您有数百个 CPU 内核,否则同时运行数百个 CPU 密集型进程(如 sox 和 ffmpeg)是没有意义的。为了给每个进程公平的 CPU 份额,这会导致过多的进程切换,这会带来自己的开销。
如果您将进程数限制为内核数,您的程序将更快地完成并使系统更可用。例如,如果您有 8 个内核,则最初启动 8 个进程,然后在其中一个完成后立即启动下一个进程。
推荐阅读
- c++ - 为什么这在 C++ 中有效?
- java - 关于 Java 中的泛型的public classG
- javascript - 在 JavaScript 类中创建空数组给出语法错误
- pyspark - 如何使用pyspark查找每年的汽车票总数?
- javascript - Wrong return of Roman Numeral Converter
- java - 将 MIPS 转换为 Java
- c# - 使用c#运行已安装的应用程序时出错
- installation - 气流安装问题| setproctitle 问题 [已解决]
- php - 在 Fat free 框架中使用 Ajax 每 5 秒渲染一次路由
- spring-boot - 是否可以将数据(准确地说是 TraceID)从 Spring Cloud API 网关发送到微服务?