본문 바로가기
Django

스레드와 GIL

by Going9 2023. 9. 15.

프로세서: 실행중인 프로그램

스레드: 프로세스 내에서 실제로 작업하는 주체

코어가 하나 이상이고 스레드도 하나 이상일 때, 각각의 코어에서 스레드는 실행될 수 있음. 그래서 동시에 작업을 하는 것이 가능함.

 

만약에 코어가 하나밖에 없다면 스레드들을 짧은 시간동안 번갈아 가면서 처리해서 병렬 효과를 볼 수 있음. 예를 들어 각 스레드를 0.1초씩 처리하면 여러 작업이 동시에 실행되는 효과가 있는 것.

 

그런데 파이썬은 인터프리터에 스레드 하나만 접근할 수 있게 제한함.

가령 코어가 2개, 스레드가 2개, 처리해야하는 작업1, 2가 있다고 하자. 일반적으로 각각의 코어에서 작업을 하나씩 맡아 동시에 처리할 수 있음.

 

그러나 파이썬은 인터프리터에 접근 할 수 있는 스레드는 하나로 제한하기 때문에(GIL) 운영체제가 작업을 코어 두개에 맡겨도 작업이 번갈아 가면서 진행됨. 듀얼 코어라도 싱글 코어 처럼 작동하게 되는 것.