No.js Spawn vs. Execute

Em um vídeo de treinamento on-line que estou assistindo para aprender Node, o narrador diz que " spawn é melhor para processos mais longos envolvendo grandes quantidades de dados, enquanto executar é melhor para pequenos pedaços de dados."

Porquê? Qual é a diferença entre as funções de spawn do child_process e executar no nó.js, e quando é que sei qual usar?

Author: Harry Cramer, 2018-02-09

2 answers

A principal diferença é que spawn é mais adequado para um processo de longa duração com uma saída enorme. spawn passa a entrada / saída com o processo-filho. exec saída tamponada num pequeno buffer (por omissão de 200K). Também como eu sei {[[2] } primeiro desova, em seguida, tentar executar o seu processo. Para encurtar o uso {[[0]} no caso de precisar de muitos dados transmitidos a partir do processo infantil e {[[2]} Se precisar de recursos como tubos de concha, redirecções ou mesmo precisa executar mais de um programa em um tempo.

Algumas ligações úteis - DZone Hacksparrow
 2
Author: Vasyl Moskalov, 2018-02-09 03:32:36

Um bom ponto de partida é a documentação do NodeJS .

Para 'spawn', a documentação indica:

O processo infantil.o método spawn () gera um novo processo usando o comando indicado, com argumentos da linha de comandos em args. Se omitido, o args é por omissão um array vazio.

Enquanto para 'exec':

Cria uma shell e executa o comando dentro dessa shell, bloqueando qualquer saída gerada. O texto do comando passado para a função exec é processado diretamente pela shell e caracteres especiais (variar com base na shell) precisam ser tratados em conformidade.

A coisa principal parece ser se você precisa lidar com a saída do comando ou não, o que eu imagino que pode ser o fator impactando desempenho (Eu não comparei). Se você só se importa com a conclusão do processo, e não com a sua saída, então 'spawn' pareceria ser suficiente.

 2
Author: Andre M, 2018-02-09 03:29:56