GIL
- 하나의 스레드가 자원을 독점하게 하기 위해 인터프리터 자체를 잠그는 방식
- 즉, 오직 한 스레드만이 파이썬 코드를 실행할 수 있음
- 자원을 얻으면 인터프리터를 락해서 다른 코드를 실행 못 하도록 함
- 자원을 다 쓰면 인터프리터 락을 해제하여 다른 코드가 자원을 얻도록 함
- 파이썬이 느린 이유 중 하나
GIL을 사용하는 이유
- 파이썬 개발 초기 CPU가 한 개였던 시대에는 스레드라는 개념이 없었음
- 이후 스레드라는 개념이 생기면서 메모리 관리 문제가 생김
- Cpython이 메모리 관리하는 방법이 스레드 세이프하지 않기 때문
- 이미 개발한 것들을 다 바꾸기에는 무리가 있으므로 파이썬이 택한 해결책이 GIL
- 동시성 관리를 편하게 하기 위해
스레드 세이프(Thread-safe)
레이스 컨디션이 발생되지 않는 완전 격리되어 작업을 수행함