[Node.js] child_process

Vorhandenheit ·2022년 9월 21일
0

JS/Node 

목록 보기
58/63

[Node.js] child_process

thread_workers 같은 경우는 한 프로세스에 여러 스레드를 동시에 사용하는 것이지만, child_process는 프로세스를 하나 더 생성하는 겁니다.

스레드가 아니라 프로세스를 하나더 만들어서 사용하는 이유는 부피가 큰 작업을 Node.js에서 하지않고, 다른 실행환경에서 동작후 결과를 받기위해 사용합니다.
=> Node.js => PY(연산) => Node.js

  • 설치
npm i child_process

const childProcess = require('child_process')
childProcess.on('error', async(err) => {
	try {
    }
  catch(err){
  	
  }
})
childProcess.on('close', async(code, signal) => {
	try {
    }
  catch (err){
  }
})

1. Child Process

Spawn, exe로 프로세스를 생성하면, 부모(Node.js)는 비동기방식으로 자식 프로세스의 해당 데이터를 스트리밍 할 수 있습니다.

(1) Spawn

child_process.spawn(command[,args][,options]

spawn을 생성하면 stdin, stdout, stderr 파이프를 가집니다.

  • stdin : 부모 프로세스에서 자식프로세스로 데이터를 보냅니다
  • stdout : 자식 프로세스는 데이터를 출력합니다
  • stderr : 명령에서 발생한 에러를 출력할 때 사용합니다.

사용

let process = childProcess.spawn('python', ['../test.py'])

process.stdout.on('data', (data) => {
	console.log(data.toString()) // 바이너리 데이터로 넘어옵니다.
})

process.stderr.on('data', (data) => {
	console.log(data.toString()
})
  • 성공!
큰 바이너리 데이터를 받는 경우 'spawn', 200k 이하의 데이터를 받는 경우 'exec'를 사용합니다.

(2) exec

child_process.exec(command[,args][,options]

출처

https://velog.io/@dev2820/nodejs%EC%9D%98-%EC%9E%90%EC%8B%9D%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4
https://medium.com/nodejs-server/node%EC%97%90%EC%84%9C-%ED%84%B0%EB%AF%B8%EB%84%90-%EB%AA%85%EB%A0%B9-%EC%8B%A4%ED%96%89-cff26a6bf83a
https://velog.io/@dev2820/nodejs%EC%9D%98-%EC%9E%90%EC%8B%9D%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4

profile
읽고 기록하고 고민하고 사용하고 개발하자!

0개의 댓글