Python Intermediate Programming2


8.1. Process & Thread

Process:

Thread:

Multi-process:

Multi-thread:



8.2. Multi-threading

python은 interpreter 언어로, single thread에 최적화되어 순차적으로 동작함 (한번에 하나의 작업)
한번에 여러 작업을 하기 위해서(multi-threading) 기존의 CPython의 GIL이라는 개념을 가져와야 했음

GIL(Global Interpreter Lock):

파이썬의 bytecode 실행 시 여러 스레드 중 하나의 스레드만 파이썬 객체에 접근할 수 있게 하는 mutex임
하나의 프로세스 당 하나의 스레드만 점유

Multi-threading 단점

I/O작업(파일 읽기쓰기, 네트워크 통신)이 아닌 CPU작업(행렬연산, 이미지처리)을 많이 사용하는 작업은 멀티 스레드 사용 시 성능 떨어짐

보완하기 위해서…

그럼에도 불구하고 Multi-threading 사용하는 이유

CPython과 달리 파이썬의 메모리 관리 방식(Thread-safe)은 오버헤드가 거의 없음

semaphore[^2]

[^1]뮤텍스(Mutex): 하나의 프로세스의 공유 자원을 하나의 스레드만이 점유하도록 하는 장치(Lock 사용)
[^2]세마포어(Semaphore): 멀티 프로그래밍 환경에서 공유된 자원에 대한 접근을 제한하는 방법(최대 허용치 존재)

Daemon & Join



8.3. Multi-processing