GIL은 특정 시점에서 언제나 하나의 쓰레드만 실행하도록 만든 것이다.
인터프리터는 객체에 참조가 생기거나 해제될 때 마다 reference count를 +-(증감)하게 된다. 쓰레드간에 공유하는 객체가 있다면 경쟁 상태가 되므로 모든 객체에 대해서 LOCK을 걸어 관리한다.
python의 이러한 GIL정책으로 CPU Bound에선 멀티스레드의 성능을 기대 할 수 없다 그치만 IO Bound에선 멀티스레드의 성능을 기대할 수 있다.
CPU Bound에서 병렬 처리를 해야 한다면 멀티프로세싱을 사용해 여러 코어를 사용 할 수 있다.