책읽기

[파이썬 알고리즘 인터뷰] 10장 - 파이썬 전역 인터프리터 락(GIL)

pythaac 2021. 7. 27. 16:03
이 글은 "파이썬 알고리즘 인터뷰 (박상길 지음)"을 읽고 주관적으로 요약한 글입니다. 

출처 : https://www.onlybook.co.kr/entry/algorithm-interview

 

  • GIL : Global Interpreter Lock
  • 파이썬이 느린 주요 원인
  • 원인
    • 파이썬 최초의 공식 구현체 CPython의 개발 초기에
    • 번거로운 동시성 관리를 편리하게
    • 스레드 세이프를 하지 않은 CPython의 메모리 관리를 쉽게 하기 위해
    • 스레드 세이프
      - 멀티스레드 프로그래밍에서 어떤 함수 / 변수 / 객체가 여러 스레드로부터 동시에 접근이 일어나도 프로그램의 실행에 문제가 없음을 의미
      - 전역 변수 등 공유 자원, Side Effect 등
  • GIL은 하나의 스레드가 자원을 독점하는 형태
  • 멀티 코어가 당연한 현재에는 하나의 스레드가 자원을 독점하는 제약은 성능에 치명적임
  • PriorityQueue와 같은 시도에도 불구하고, 과거부터 GIL에 의존하는 형태로 구현된 기능들이 대부분이라 극복이 쉽지 않음