파이썬 설계적 결함.
등장 배경 : 레퍼런스 카운팅(생성된 객체가 가르키는 참조의 수) -> 이 참조 객체가 0이되면 메모리 가비지 컬렉터에 의해 해제된다. 이와 같은 방식을 파이썬에서는 사용하고 있는데, 두 개 이상의 쓰레드에서 같은 객체에 접근을 해 업데이트 등과 같은 작업을 진행할 때 레이스 컨디션이 일어날 수 있다.(메모리 누수가 발생하거나 참조하고 있는 객체가 존재했는데 해체를 하고자 한다거나. 이와 같은 메모리 이슈의 안전성을 보장하기 위한 디자인 선택
단점 : 스레드의 병목 현상이 일어나게 된다면 병렬 프로그램임에도 불구하고 싱글 스레드로 실행한 것보다 오랜 작업시간이 걸릴 수 있다. 이는 CPU bound한 프로그램에서 많이 발생한다. 오히려 I/O Bound한 프로그램에서는 이득이 될 수 있을 가능성이 높다.
해결법
현재 상황 : PEF 703 (C 파이썬에서 GIL을 선택사항으로 두자)가 제안을 승인하는 방향으로 방향성을 잡고 있음. 그 방식은 아래와 같음