[Python] Global Interpreter Lock(GIL)은 왜 도입됐고, 어떤 특징이 있나요?
Global Interpreter Lock(GIL)? GIL은 문자 그대로 인터프리터에 대한 Lock이다. Lock은 인터프리터가 여러 스레드를 병렬적으로(Parallel) 실행하지 않도록 막는다. 파이썬엔 GIL이 있기 때문에, 인터프리터가 매 순간 1개의 쓰레드만 실행할 수 있다. 결국 파이썬의 멀티 스레딩은 병렬적(Parallel)으로 실행되는 대신, 동시적으로(Concurrent) 실행된다. 이때 여러 스레드 중 실행 될 1개의 스레드를 정하려면, 스레드 스케줄러가 필요하다. 하지만 파이썬은 자체적인 스케줄러가 없어서, OS의 스레드 스케줄링을 그대로 활용한다. 그래서 I/O Block이 발생할 경우 GIL도 마찬가지로 Release된다. 따라서 I/O Bound 작업의 경우, 멀티 스레딩으로 병..
2022.06.03