Разница между методами spawn () и fork () в Node.js

Node.js1 Изучение

В этой статье мы обсудим разницу между методами spawn () и fork () в Node.js. Оба являются способами создания дочерних процессов в Node.js для обработки возрастающих рабочих нагрузок.

Метод Spawn (): процесс spawn инициирует команду в новом процессе. Мы можем передать ему команду в качестве аргумента. Результатом функции порождения является экземпляр дочернего процесса, который реализует EventEmitterAPI. Обработчики событий могут быть присоединены или зарегистрированы к созданному дочернему экземпляру. Некоторые из событий, которые могут быть прикреплены или зарегистрированы в этих дочерних экземплярах, — это отключение, ошибка, закрытие, сообщение и т. Д.

Параметры: этот метод принимает следующие параметры.

  • command:принимает команды для запуска в виде строки.
  • args:это список строковых аргументов. Значение по умолчанию — пустой массив.
  • options:этот объект параметров может иметь различные свойства, такие как stdio, uid, gid, shell и т. д.
    • shell: принимает логическое значение. Если true, запускает команду внутри оболочки. Другая оболочка может быть указана в виде строки. Значение по умолчанию — false, что означает отсутствие оболочки.

Возвращаемое значение: возвращает экземпляр дочернего процесса.

Пример: это очень простой и общий пример использования spawn. Сначала мы потребовали порождение путем деструктуризации, а затем создали дочерний процесс, передав аргументы. Затем зарегистрируйте событие stdout для этого дочернего процесса.

Javascript

const { spawn } = require('child_process');
const child = spawn('dir', ['D:\\empty'], { shell: true });
 
child.stdout.on('data', (data) => {
  console.log(`stdout ${data}`);
});

Выход:

 

Метод Fork (): метод fork — это частный случай метода spawn. Основное преимущество использования метода fork заключается в том, что он позволяет родительскому и дочернему процессам обмениваться данными. При этом каждому дочернему процессу выделяется собственная память, что может повлиять на производительность приложения.

Параметры: этот метод принимает следующие параметры.

  • modulePath:принимает модуль для запуска в виде строки.
  • args:это список строковых аргументов.

Пример: создайте два файла с именами server.js и child.js, как показано ниже.

js

const { fork } = require('child_process');
const childProcess = fork(__dirname + '/child.js');
 
childProcess.on('message', (message) => {
  console.log(`There is a message from child ""${message}""`);
});

js

process.send('Hello from child');

Выход:

 

Сообщение, отправленное из child.js, печатается в файле sever.js из-за использования дочернего процесса fork.

Разница между дочерним процессом Spawn и Fork:

Spawn

Fork

При этом начинается отправка данных обратно родительскому процессу из дочернего процесса, как только дочерний процесс начинает выполняться. Это не отправляет данные автоматически, но мы можем использовать процесс глобального имени модуля для отправки данных из дочернего процесса и в родительском модуле, используя имя дочернего процесса, который процесс будет отправлять дочернему процессу.
Он создает новый процесс с помощью команды, а не запускается в том же процессе узла. Он создает несколько отдельных процессов (дочерних процессов), но все они работают в том же процессе узла, что и родительский.
При этом новый экземпляр V8 не создается. При этом создается новый экземпляр V8.
Он используется, когда мы хотим, чтобы дочерний процесс возвращал большой объем данных родительскому процессу. Он используется для отделения ресурсоемких задач от основного цикла обработки событий.
Читайте также:  Что изучить в первую очередь: структуры данных или алгоритмы?
Оцените статью
bestprogrammer.ru
Добавить комментарий