nodejs node example child node.js process parent-child

node.js - node - process spawn



Proceso secundario node.js-diferencia entre spawn y tenedor (1)

Spawn es un comando diseñado para ejecutar comandos del sistema. Cuando ejecuta spawn, le envía un comando del sistema que se ejecutará en su propio proceso, pero no ejecuta ningún código adicional dentro del proceso de su nodo. Puede agregar oyentes para el proceso generado, para permitir que su código interactúe con el proceso engendrado, pero no se crea una nueva instancia de V8 (a menos que, por supuesto, su comando sea otro comando Node, pero en este caso debe usar fork!) Y solo una copia de su módulo de nodo está activa en el procesador.

Fork es una instancia especial de spawn, que ejecuta una nueva instancia del motor V8. Es decir, básicamente puedes crear varios trabajadores, ejecutando exactamente la misma base de código de nodo, o quizás un módulo diferente para una tarea específica. Esto es más útil para crear un grupo de trabajadores. Si bien el modelo de eventos asíncronos de nodos permite que un solo núcleo de una máquina se use de manera bastante eficiente, no permite que un proceso de nodos haga uso de máquinas de núcleos múltiples. La forma más sencilla de lograr esto es ejecutar múltiples copias del mismo programa, en un solo procesador.

Una buena regla general es uno o dos procesos de nodo por núcleo, tal vez más para máquinas con una buena relación reloj ram / reloj de cpu o para procesos de nodo cargados de E / S y poco trabajo de CPU, para minimizar el tiempo de inactividad del evento loop está esperando nuevos eventos. Sin embargo, la última sugerencia es una micro-optimización, y necesitaría una evaluación comparativa cuidadosa para garantizar que su situación se adapte a la necesidad de muchos procesos / núcleo. En realidad, puede disminuir el rendimiento al generar demasiados trabajadores para su máquina / escenario.

En última instancia, podría usar spawn de una manera que hiciera lo anterior, al enviar spawn un comando Node. Pero esto sería una tontería, porque fork hace algunas cosas para optimizar el proceso de creación de instancias de V8. Simplemente dejando en claro que, en última instancia, engendrar abarca tenedor. Fork es simplemente óptimo para este particular y muy útil caso de uso.

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

Esto podría parecer una pregunta básica, pero no pude encontrar ninguna documentación:

¿Cuál es la diferencia entre bifurcar y generar un proceso node.js? He leído que bifurcar es un caso especial de desove, pero ¿cuáles son los diferentes casos de uso / percusiones para usar cada uno de ellos?