Python GIL

GIL이란?

Python(bytecode) 을 Cpython 가 실행함. 실행 시 여러 thread 사용할 경우 단일 스레드만이 python object 만이 접근하게 제안하는 mutex
멀티 스레드를 사용해도 단 하나의 object 만이 접근이 가능하도록 함


Thread를 안전하게 사용하기 위함

GIL(Global Interpreter Lock)이 있지만 Python을 써도 되는 이유

(1) 단일스레드로도 충분히 빠르다.
(2) 멀티 프로세스로 하는 작업을 만들어서 사용하면 되기 때문에 제약이 된다고 보지 않음
- numpy 등 대용량 라이브러리 등도 멀티 프로세스로 사용하기 때문에 문제가 되지 않음
(3) 병렬 처리는 Multiprocessing, asyncio 선택지등 다양한 방식 사용 가능
(4) thread 동시성 완벽 처리를 위해 Jython, IronPython, Stackless Python 등이 존재

댓글

Designed by JB FACTORY