728x90
반응형
Python 전역 인터프리터 락 GIL
파이썬 인터프리터 락(Python Interpreter Lock, GIL)은 파이썬에서 멀티스레드 프로그래밍을 할 때 발생하는 문제이다.
GIL은 CPython 인터프리터에서 실행되는 파이썬 코드의 실행을 담당하는 전역 락이다. 이 락은 모든 파이썬 스레드가 실행 중인 파이썬 바이트코드에서 한 번에 하나의 스레드만 실행하도록 보장한다.
Wiki발 자료를 보면 1994년 1월 26일 발표로 상당히 오래된 구조체이다. 이 시기에 단일 코어에서 작동하는 컴퓨터를 주로 사용해 멀티스레드에 대한 고민 없이 구현하게 되었다.
결과적으로 파이썬의 동시성 처리에 제한이 생겼다. GIL의 문제점은 멀티코어 CPU에서 CPU 바운드 작업을 수행하는 멀티스레드 애플리케이션의 성능을 저하시킬 수 있다.
왜냐하면 한 번에 하나의 스레드만 실행되므로 다른 스레드는 대기 상태가 되어 CPU 자원을 활용하지 못하기 때문이다. 하지만 GIL은 파이썬 인터프리터의 안정성을 유지하는 데 중요한 역할을 한다. 파이썬 인터프리터의 많은 기능과 확장 모듈이 GIL에 의존하기 때문에 GIL을 제거하기는 쉽지 않다. (그만큼 Interpreter의 편의성) 따라서 파이썬에서는 멀티스레드 작업이 필요한 경우, 병렬 처리 라이브러리를 사용하거나 멀티프로세싱을 이용하는 것이 좋은 해결책이다.
반응형