栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

node.js子进程-生成和派生之间的区别

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

node.js子进程-生成和派生之间的区别

Spawn是用于运行系统命令的命令。运行spawn时,会向其发送系统命令,该命令将在其自己的进程上运行,但不会在节点进程内执行任何其他代码。您可以为生成的进程添加侦听器,以允许您的代码与生成的进程进行交互,但是不会创建新的V8实例(除非您的命令是另一个Node命令,但是在这种情况下,您应该使用fork!)和您的节点模块只有一个副本在处理器上处于活动状态。

Fork是spawn的特殊实例,它运行V8引擎的新实例。这意味着,您实际上可以创建多个工作程序,它们在完全相同的Node代码库上运行,或者为特定任务运行在不同的模块上。这对于创建工作池最有用。尽管节点的异步事件模型允许相当高效地使用机器的单个核心,但它不允许节点进程使用多核心机器。完成此操作的最简单方法是在单个处理器上运行同一程序的多个副本。

一个好的经验法则是每个内核一到两个节点进程,对于具有良好的内存时钟/ cpu时钟比率的机器,或者对于I /
O繁重而CPU工作量不大的节点进程,则可能更多,以最大程度地减少事件的停机时间。循环正在等待新事件。但是,后一种建议是微优化,因此需要仔细进行基准测试,以确保您的情况适合许多流程/核心的需求。实际上,通过为您的机器/方案生成过多的工作程序,实际上可以降低性能。

最终,您可以通过发送spawn一个Node命令,以上述方式使用spawn。但这是愚蠢的,因为fork做了一些事情来优化创建V8实例的过程。只需说清楚,最终生成就包含了fork。对于这种特殊且非常有用的用例,Fork才是最佳选择。

http://nodejs.org/api/child_process.html#child_process_child_process_exec_command_options_callback



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/393385.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号