일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 개발자
- 뭐든
- 쓰릴오브파이트
- 운동
- 매일
- FIT XR
- leetcode
- 읽기
- 리얼 클래스
- 미드시청
- 영어원서읽기
- Writing
- 파비최
- 화상영어
- 사이드
- Problem Solving
- 영어공부
- 10분
- 만화도
- 잡생각
- realclass
- 월간
- 30분
- English
- 괜찮음
- 프로젝트
- Daily Challenge
- 3줄정리
- 링피트
- 스탭퍼
- Today
- Total
파비의 매일매일 공부기록
파이썬 병렬 프로그래밍 - #5 multiprocessing과 ProcessPoolExecutor 모듈 사용 본문
파이썬 병렬 프로그래밍 - #5 multiprocessing과 ProcessPoolExecutor 모듈 사용
fabichoi 2021. 7. 23. 23:30지난 장에 서는 threading 모듈을 사용했다면
이번장에서는 multiprocessing 모듈을 사용해서 프로세스 패러다임(지난번엔 스레드 패러다임)으로 구현한다.
프로세스 개념 이해
- 운영체제 안에서 실행하는 프로그램과 자원에 대한 컨테이너인 프로세스를 이해해야 함.
- 실행하는 프로그램과 관련된 전부를 프로세스가 관리 가능. 데이터/자식 프로세스/주소 공간/다른 프로세스와 통신
프로세스 모델 이해
- 조작과 제어가 가능한 정보 및 자원과 관련 있음.
- 운영체제는 프로세스와 관련된 정보를 저장한 프로세스 제어 블록(PCB) 구조체를 가짐
- PCB 내에는
> 프로세스 ID : 프로세스 식별 가능한 부호 없는 고유 정수 값
> 프로그램 카운터 : 실행할 다음 프로그램 주소 포함
> I/O 정보 : 프로세스와 관련된 열린 파일과 디바이스 목록
> 메모리 할당 : 프로세스가 사용하는 공간과 프로세스와 페이징 테이블이 예약한 공간에 대한 정보 저장
> CPU 스케줄링 : 프로세스 우선순위에 관한 정보와 방대한 큐의 해당 프로세스 관련 정보 저장
> 우선순위 : 프로세스가 CPU를 획득할 수 있는 우선순위 정의
> 현재 상태 : 프로세스가 준비, 대기, 실행 중 상태인지 여부
> CPU 레지스트리 : 스택 포인터와 다른 정보 저장
프로세스 상태 정의
- 실행 중 : 프로세스가 CPU 사용 중
- 준비 : 프로세스 큐에서 대기했던 프로세스가 지금 CPU를 사용할 준비가 됨
- 대기 : 프로세스는 실행했던 태스크와 관련된 몇몇 I/O 연산 기다림
다중처리 통신 구현 : multiprocessing 모듈은 두 가지 통신 방식 허용. 모두 메시지 전달 패러다임에 기반을 둠. 메시지 전달 패러다임은 동기화 메커니즘 부재에 기반을 둠. 프로세스 간 데이터 복사본을 교환하기 때문
이다음부터는 이전장과 동일하게 소스와 함께 설명이 되므로
책을 참고하는 걸 추천.
'Study > Python' 카테고리의 다른 글
파이썬 병렬 프로그래밍 - #7 샐러리를 이용한 테스크 분산 (0) | 2021.07.25 |
---|---|
파이썬 병렬 프로그래밍 - #6 패러렐 파이썬 활용 (0) | 2021.07.24 |
파이썬 병렬 프로그래밍 - #4 threading과 concurrent.futures 모듈 사용 (0) | 2021.07.22 |
파이썬 병렬 프로그래밍 - #3 병렬화 문제 확인 (0) | 2021.07.21 |
파이썬 병렬 프로그래밍 - #2 병렬 알고리즘 설계 (0) | 2021.07.20 |