37. spawn

// worker_threads 같은 멀티 스레드는 웬만하면 다른 프로그래밍 언어에서하는 것이 좋다.
const spawn = require('child_process').spawn;

// 아래와 같이 python을 노드로 실행할 수 있다.
// 새로운 process를 띄워서 파이썬을 실행하는 것이다.
const process = spawn('python', ['test.py'])

// 결과물을 아래와 같이 직접 받아줘야된다.
process.stdout.on('data', data => {
    console.log(data); // <Buffer 68 65 6c 6c 6f 20 70 79 74 68 6f 6e 0a>
    console.log(data.toString()); // hello python
})

// 에러났을 경우도 대비해준다.
process.stderr.on('data', data => {
    console.error(data);
    console.error(data.toString());
})

// ------------------------------------------------------
// 위와 같이 노드에서 파이썬을 실행할 수 있다.
// 단, 파이썬이 설치가 되어있어야한다.
// C++을 호출하려면 C++이 설치되어있어야한다.

// 노드에서 파이썬, C++을 대신 실행하는 것이 아니라
// 파이썬, C++에게 이것좀 대신 실행해줘 라고 부탁하는 것이기 때문에
// 파이썬, C++이 설치가 되어있어야한다.

// ------------------------------------------------------
// 멀티 스레드를 차라리 이런식으로 구현하는게 더 편할 것이다.
// 노드 자체로 멀티 스레드를 하는 것이 그렇게 효율이 좋다고는 말씀 못드리겠다.
// 근데 할 수는 있다는 것.

아래 플레이그라운드엔 python 설치가 안되어있어서 에러가 발생한다.