GIL(Global Interpreter Lock)

Sawol·2021년 6월 15일
0

I Need Python

목록 보기
13/13
post-thumbnail

GIL

  • 하나의 스레드가 자원을 독점하게 하기 위해 인터프리터 자체를 잠그는 방식
  • 즉, 오직 한 스레드만이 파이썬 코드를 실행할 수 있음
  • 자원을 얻으면 인터프리터를 락해서 다른 코드를 실행 못 하도록 함
  • 자원을 다 쓰면 인터프리터 락을 해제하여 다른 코드가 자원을 얻도록 함
  • 파이썬이 느린 이유 중 하나

GIL을 사용하는 이유

  • 파이썬 개발 초기 CPU가 한 개였던 시대에는 스레드라는 개념이 없었음
  • 이후 스레드라는 개념이 생기면서 메모리 관리 문제가 생김
  • Cpython이 메모리 관리하는 방법이 스레드 세이프하지 않기 때문
  • 이미 개발한 것들을 다 바꾸기에는 무리가 있으므로 파이썬이 택한 해결책이 GIL
  • 동시성 관리를 편하게 하기 위해

스레드 세이프(Thread-safe)
레이스 컨디션이 발생되지 않는 완전 격리되어 작업을 수행함

0개의 댓글