Node 학습(12) - 프로세스 및 패키지
Node.js 다중 프로세스
우리는 모두 노드를 안다.js는 단일 라인 모드로 실행되지만, 이벤트 드라이브를 사용하여 처리하고 발송합니다. 이것은 다중 핵 cpu 시스템에서 여러 개의 하위 프로세스를 만들어서 성능을 향상시키는 데 도움이 됩니다.
모든 하위 프로세스는 항상 세 개의 흐름 대상을 가지고 있다:child.stdin, child.stdout와child.stderr.그들은 부모 프로세스의 stdio 흐름을 공유할 수도 있고, 독립적으로 유도된 흐름 대상일 수도 있다.Node는 child 를 제공합니다.프로세스 모듈은 다음 방법으로 하위 프로세스를 만듭니다.
exec() 방법
child_process.exec는 하위 프로세스를 사용하여 명령을 실행하고 하위 프로세스의 출력을 캐시하며 하위 프로세스의 출력을 리셋 함수 매개 변수로 되돌려줍니다.문법은 다음과 같다.
child_process.exec(command[, options], callback)
매개 변수
매개 변수 설명은 다음과 같다:command: 문자열, 실행할 명령, 매개 변수는 빈칸으로 구분
options :
/bin/sh
, Windows에서cmd.exe
, 셸은 UNIX에서-c
스위치를 식별할 수 있어야 한다/s /c
.Windows에서 명령줄 해석은 호환 가능cmd.exe
exec () 방법은 가장 큰 버퍼를 되돌려주고 프로세스가 끝날 때까지 기다리며 버퍼의 내용을 한꺼번에 되돌려줍니다.
인스턴스
js 파일 support 두 개를 만듭니다.js와 마스터.js.
support.js 파일 코드:
console.log(" " + process.argv[2] + " 。" );
master.js 파일 코드:
const fs = require('fs');
const child_process = require('child_process');
for(var i=0; i<3; i++) {
var workerProcess = child_process.exec('node support.js '+i,
function (error, stdout, stderr) {
if (error) {
console.log(error.stack);
console.log('Error code: '+error.code);
console.log('Signal received: '+error.signal);
}
console.log('stdout: ' + stdout);
console.log('stderr: ' + stderr);
});
workerProcess.on('exit', function (code) {
console.log(' , '+code);
});
}
다음 코드를 실행하여 출력 결과는 다음과 같습니다.
$ node master.js
, 0
stdout: 1 。
stderr:
, 0
stdout: 0 。
stderr:
, 0
stdout: 2 。
stderr:
spawn () 방법
child_process.spawn은 지정한 명령행 매개 변수를 사용하여 새 프로세스를 만듭니다. 문법 형식은 다음과 같습니다.
child_process.spawn(command[, args][, options])
매개 변수
매개 변수는 다음과 같습니다:command: 실행할 명령
args:Array 문자열 매개 변수 배열 options Object
인스턴스
js 파일 support 두 개를 만듭니다.js와 마스터.js. support.js 파일 코드:
console.log(" " + process.argv[2] + " 。" );
master.js 파일 코드:
const fs = require('fs');
const child_process = require('child_process');
for(var i=0; i<3; i++) {
var workerProcess = child_process.spawn('node', ['support.js', i]);
workerProcess.stdout.on('data', function (data) {
console.log('stdout: ' + data);
});
workerProcess.stderr.on('data', function (data) {
console.log('stderr: ' + data);
});
workerProcess.on('close', function (code) {
console.log(' , '+code);
});
}
다음 코드를 실행하여 출력 결과는 다음과 같습니다.
$ node master.js stdout: 0 。
, 0
stdout: 1 。
, 0
stdout: 2 。
, 0
fork 방법
child_process.fork는 spawn () 방법의 특수한 형식으로 프로세스를 만드는 데 사용되며 문법 형식은 다음과 같습니다:
child_process.fork(modulePath[, args][, options])
매개 변수
매개변수 설명은 다음과 같습니다:modulePath:String, 하위 프로세스에서 실행될 모듈
args:Array 문자열 매개 변수 배열
options:Object
true
이면 하위 프로세스stdin
, stdout
와 stderr
가 상위 프로세스에 연결되며, 그렇지 않으면 상위 프로세스에서 상속됩니다.(기본값: false
)인스턴스
js 파일 support 두 개를 만듭니다.js와 마스터.js. support.js 파일 코드:
console.log(" " + process.argv[2] + " 。" );
master.js 파일 코드:
const fs = require('fs');
const child_process = require('child_process');
for(var i=0; i<3; i++) {
var worker_process = child_process.fork("support.js", [i]);
worker_process.on('close', function (code) {
console.log(' , ' + code);
});
}
다음 코드를 실행하여 출력 결과는 다음과 같습니다.
$ node master.js
0 。
, 0
1 。
, 0
2 。
, 0
Node.js JXcore 패키지
JXcore는 다중 스레드를 지원하는 Node입니다.js 버전, 기본적으로 기존 코드에 대한 변경 없이 다중 코드로 안전하게 실행할 수 있습니다.
JXcore 설치
JXcore 설치 패키지를 다운로드하고 압축을 푸십시오. 압축을 푸는 디렉터리에서 jx 바이너리 파일 명령을 제공합니다. 다음은 이 명령을 주로 사용합니다.
1단계, 다운로드
JXcore 설치 패키지 다운로드https://github.com/jxcore/jxcore-release, 당신은 자신의 시스템 환경에 따라 설치 패키지를 다운로드해야 합니다.1. 윈도 플랫폼 다운로드: Download(Windows x64(V8).2. Linux/OSX 설치 명령:$ curl http://jxcore.com/xil.sh | bash
사용 권한이 부족한 경우 다음 명령을 사용할 수 있습니다.curl http://jxcore.com/xil.sh | sudo bash
위 단계가 올바르면 다음 명령을 사용하여 버전 번호 정보를 출력합니다.$ jx --version
v0.10.32
패키지 코드
예를 들어, 우리의 Node.js 프로젝트는 다음 몇 개의 파일을 포함하는데, 그 중에서 index입니다.js가 마스터 파일입니다.drwxr-xr-x 2 root root 4096 Nov 13 12:42 images
-rwxr-xr-x 1 root root 30457 Mar 6 12:19 index.htm
-rwxr-xr-x 1 root root 30452 Mar 1 12:54 index.js
drwxr-xr-x 23 root root 4096 Jan 15 03:48 node_modules
drwxr-xr-x 2 root root 4096 Mar 21 06:10 scripts
drwxr-xr-x 2 root root 4096 Feb 15 11:56 style
다음에 우리는 jx 명령을 사용하여 상기 항목을 포장하고 index를 지정합니다.js는 Node입니다.js 프로젝트의 주 파일:$ jx package index.js index
위 명령이 성공적으로 실행되면 다음 두 개의 파일이 생성됩니다.
$ curl http://jxcore.com/xil.sh | bash
curl http://jxcore.com/xil.sh | sudo bash
$ jx --version
v0.10.32
drwxr-xr-x 2 root root 4096 Nov 13 12:42 images
-rwxr-xr-x 1 root root 30457 Mar 6 12:19 index.htm
-rwxr-xr-x 1 root root 30452 Mar 1 12:54 index.js
drwxr-xr-x 23 root root 4096 Jan 15 03:48 node_modules
drwxr-xr-x 2 root root 4096 Mar 21 06:10 scripts
drwxr-xr-x 2 root root 4096 Feb 15 11:56 style
$ jx package index.js index
JX 파일 로드
jx 명령을 사용하여 프로젝트를 패키지화합니다.
$ node index.js command_line_arguments
JXcore를 사용하여 컴파일한 후에는 다음 명령을 사용하여 생성된 jx 바이너리 파일을 실행할 수 있습니다.
$ jx index.jx command_line_arguments
참조http://www.runoob.com/
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.