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

Hitesh

这似乎是一个基本问题,但是我找不到任何文档:

分叉和生成node.js进程有什么区别?我已经读到分叉是生成的一种特殊情况,但是使用它们的不同用例/重用分别是什么?

克里斯·CM

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

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

一个好的经验法则是每个内核一到两个节点进程,对于具有良好的ram时钟/ 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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何用生成的子节点替换node.js进程?

来自分类Dev

Node.js子进程和管道-OSX与Ubuntu

来自分类Dev

在node.js中生成一个子进程,数据未定义

来自分类Dev

在node.js中生成一个子进程

来自分类Dev

Node.js中的子进程stdout和stderr列大小

来自分类Dev

在node.js中同时使用子进程和集群是否意味着完全

来自分类Dev

在node.js中同时使用子进程和集群是否意味着完全

来自分类Dev

Node.js中的子进程stdout和stderr列大小

来自分类Dev

node.js 与 docker 中的子进程

来自分类Dev

node.js子进程更改目录并运行该进程

来自分类Dev

如何从Node JS中的子进程获取进程ID

来自分类Dev

Node.js 子进程到 Python 进程

来自分类Dev

生成子进程以在Node.js中调用npm-installed命令会在Windows中导致ENOENT

来自分类Dev

node.js中位置和重定向之间的区别

来自分类Dev

node.js中对象的方法和属性之间的区别

来自分类Dev

node.js命令promt和.exe之间的区别

来自分类Dev

node.js命令promt和.exe之间的区别

来自分类Dev

eventEmitter Node.js中的addListener和On之间的区别

来自分类Dev

如何在Node.js中等待子进程完成?

来自分类Dev

Node.js-在子进程中需要相同的模块

来自分类Dev

从同一node.js子进程运行多个命令

来自分类Dev

如何使用pid杀死Node.js子进程?

来自分类Dev

Node.js子进程中的数据丢失

来自分类Dev

Node.js检测到子进程退出

来自分类Dev

Node.js:杀死ChildProcess#spawn的子进程

来自分类Dev

node.js在子进程中运行功能?

来自分类Dev

从node.js运行git作为子进程?

来自分类Dev

Javascript(node.js)限制子进程数

来自分类Dev

如何重新启动Node.js子进程

Related 相关文章

热门标签

归档