ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 파이썬은 왜 느릴까?
    언어/파이썬 2021. 1. 21. 18:05

    파이썬이 왜 느린지 얘기할 때 가장 많이 듣는 얘기는 전역 인터프리터 락 즉, Global Interpreter Lock(GIL)이 아닐까 싶다. 

    파이썬 최초의 공식 구현체인 CPython은 개발 초기에 번거로운 동시성 관리를 편리하게 하고 Thread-safe하지 않은 CPython의 메모리 관리를 쉽게 하기 위해, GIL로 파이썬 객체에 대한 접근을 제한하는 형태로 설계했다.

    GIL실행구조

    GIL은 하나의 스레드가 자원을 독점하는 형태로 실행된다.

    지금 생각하면 정말 좋지 않은 형태이지만 CPython 개발이 시작된 것이 1994년이었으니, CPU가 하나던 당시에는 충분히 그런 선택을 할 만했고, GIL 디자인에는 아무런 문제가 없었다.

    지금처럼 멀티코어가 당연한 세상에서, 하나의 스레드가 자원을 독점하는 형태로 실행되는 제약은 매우매우매우 치명적이다.

    최근 들어 전에 posting 했던 PriorityQueue 모듈을 비롯해, 한계를 극복하기 위한 다양한 시도를 하고 있지만 이미 과거부터 GIL에 의존하는 형태로 구현된 기능들이 대부분을 차지 하고 있어, 이런한 제약은 극복하기가 쉽지 않다고 한다. 

    '언어 > 파이썬' 카테고리의 다른 글

    중첩 함수(Nested Function)  (0) 2021.01.24
    가변객체 불변객체  (0) 2021.01.24
    우선순위 큐  (0) 2021.01.21
    yield  (0) 2021.01.20
    원형 큐(Circular Queue)  (0) 2021.01.18

    댓글