node.js 로 만든 멀티 프로세스(멀티 차일드 프로세스)

1
말이 좋아 멀티 프로세스지...
그냥 설정된 명령어를 지정수 만큼 child process로 호출
출력값을 화면에 찍어주는 것.
(설정으로 line기준으로 제어할 수 있다.)

테스트는 
>node test.multi_process.js
(테스트에서 외부 호출 명령에서 .php 가 사용되었음. php가 설치되어있어야함)

//--
4개 명령어를 (cpu는 4코어)
  • 1개씩 실행 할 경우 : excute time:39623
  • 2개씩 실행 할 경우 : excute time:19837
  • 3개씩 실행 할 경우 : excute time:19867
    • 2개와 차이가 거의 없는 이유는 4개중 3개 실행 후 1개를 실행하는데,
      그룹으로 보면 (3)+(1) 에서 (3)의 실행시간이나 (1)의 실행 시간이 같다.
      이건 (2)+(2)로 해도 같다.
    • 즉, 순차로 2번 실행하는 시간과 같다.
  • 4개씩 실행 할 경우 : excute time:10192

//--
useReadline를 사용한 경우 (라인 단위로 제어)
-> 만든 이유가 대용량의 file을 line단위로 처리할경우, 파일을 잘라서 해당 부분을 처리후 바로 출력하면 끝나게 하기 위해서
-> 동시에 4개가 출력해도 라인 단위로 맞춰서 출력됨(순서는 뒤죽박죽이라도 line속의 내용은 섞이지 않음)

firstCmd
2: SLEEP(1)
1: SLEEP(1)
0: SLEEP(1)
3: SLEEP(1)
000020000200002000020000200002000020000200002 , 2014-12-19 15:03:03 END : 2
000010000100001000010000100001000010000100001 , 2014-12-19 15:03:03 END : 1
000000000000000000000000000000000000000000000 , 2014-12-19 15:03:03 END : 0
000030000300003000030000300003000030000300003 , 2014-12-19 15:03:03 END : 3
lastCmd
! excute time:10233

-----=------
useReadline를 사용 안한 경우 (바로 출력)(내용이 뒤섞인다.)

firstCmd
1: SLEEP(1)
0000132: SLEEP(1: SLEEP(1))

00000200030: SLEEP(1)
00000000010000030002000000000100000300020000000001000002000300000000010000030002
00000000010000030002000000000100000200030000000001000003000200000000010000020003
00000 , 2014-12-19 15:03:46 END : 1
 , 2014-12-19 15:03:46  , 2014-12-19 15:03:46END : 2
 END : 3
 , 2014-12-19 15:03:46 END : 0
lastCmd
! excute time:10127

//-------
test.php

<?
ob_implicit_flush(1); // 바로 출력하도록 설정(출력 버퍼가 동작 안한다)
ob_end_clean(); //출력 버퍼를 비운다.(이걸 안하면 이전 출력 버퍼가 데이터를 버퍼처리 하고있다.)

//$r = rand(0,1);
$r = 1;
echo $_SERVER['argv'][1].": SLEEP(".$r,")\n";
//sleep($r);
$icnt = 10;
while(--$icnt){
echo sprintf('%05d',$_SERVER['argv'][1]);
usleep(500000); //0.5초
}
echo " , ".date("Y-m-d H:i:s")," END : {$_SERVER['argv'][1]}\n";
?>
댓글
  • No Nickname
    No Comment
  • 권한이 없습니다.
    {{m_row.m_nick}}
    -
목록형 📷 갤러리형
제목
[기본형] HTML (with 부트스트랩5.3 , jquery 3.7, vue.js)
유용한 리눅스(LINUX) 명령어
[공지] 기술 게시판
3.31
4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
4.10
4.11
4.12
4.13
4.14
4.15
4.16
4.18
4.19
4.20
4.21
4.22
4.23
4.24
4.25
4.26
4.27
4.28
4.29
4.30
5.1
5.2
5.3
5.4