Global Interpreter Lock(GIL)은 하나의 process에서 여러 thread를 사용하고 CPU가 multi-core를 지원해도 병렬 계산을 하지 못하고 한번에 한 thread 연산만 가능하도록 python interpreter 자체에서 막아버리는 python의 특징이다. 이 특징 때문에 python이 single thread 기반 언어라는 이야기가 나오는 것이다.
그렇다면 python은 왜 GIL이라는 제약을 만든 것일까? python은 객체지향 언어로 각 객체의 reference count를 기반으로 해당 객체를 메모리에서 해제할지 결정한다. 만약 thread 병렬 계산이 가능하면 각 객체의 reference count를 관리하는 과정에서 race condition 때문에 문제가 발생할 수 있다. 이를 방지하려면 각 작업마다 mutex를 거는 등 추가적인 작업이 필요한데 Simple is the Best라는 phthon의 철학 때문에 이런 복잡한 작업보다 multi thread 병렬 계산을 막는 방식을 선택했다고 한다.