파비의 매일매일 공부기록

파이썬 병렬 프로그래밍 - #5 multiprocessing과 ProcessPoolExecutor 모듈 사용 본문

Study/Python

파이썬 병렬 프로그래밍 - #5 multiprocessing과 ProcessPoolExecutor 모듈 사용

fabichoi 2021. 7. 23. 23:30

지난 장에 서는 threading 모듈을 사용했다면

이번장에서는 multiprocessing 모듈을 사용해서 프로세스 패러다임(지난번엔 스레드 패러다임)으로 구현한다.

 

프로세스 개념 이해

- 운영체제 안에서 실행하는 프로그램과 자원에 대한 컨테이너인 프로세스를 이해해야 함.

- 실행하는 프로그램과 관련된 전부를 프로세스가 관리 가능. 데이터/자식 프로세스/주소 공간/다른 프로세스와 통신

 

프로세스 모델 이해

- 조작과 제어가 가능한 정보 및 자원과 관련 있음.

- 운영체제는 프로세스와 관련된 정보를 저장한 프로세스 제어 블록(PCB) 구조체를 가짐

- PCB 내에는

  > 프로세스 ID : 프로세스 식별 가능한 부호 없는 고유 정수 값

  > 프로그램 카운터 : 실행할 다음 프로그램 주소 포함

  > I/O 정보 : 프로세스와 관련된 열린 파일과 디바이스 목록

  > 메모리 할당 : 프로세스가 사용하는 공간과 프로세스와 페이징 테이블이 예약한 공간에 대한 정보 저장

  > CPU 스케줄링 : 프로세스 우선순위에 관한 정보와 방대한 큐의 해당 프로세스 관련 정보 저장

  > 우선순위 : 프로세스가 CPU를 획득할 수 있는 우선순위 정의

  > 현재 상태 : 프로세스가 준비, 대기, 실행 중 상태인지 여부

  > CPU 레지스트리 : 스택 포인터와 다른 정보 저장

 

프로세스 상태 정의

- 실행 중 : 프로세스가 CPU 사용 중

- 준비 : 프로세스 큐에서 대기했던 프로세스가 지금 CPU를 사용할 준비가 됨

- 대기 : 프로세스는 실행했던 태스크와 관련된 몇몇 I/O 연산 기다림

 

다중처리 통신 구현 : multiprocessing 모듈은 두 가지 통신 방식 허용. 모두 메시지 전달 패러다임에 기반을 둠. 메시지 전달 패러다임은 동기화 메커니즘 부재에 기반을 둠. 프로세스 간 데이터 복사본을 교환하기 때문

 

이다음부터는 이전장과 동일하게 소스와 함께 설명이 되므로

책을 참고하는 걸 추천.

반응형
Comments