본문 바로가기

개발자 레니는 지금 -/소프트웨어와 함께

[ Python ] Threading GIL 정의



Python

부제목








 시작 전 테스트환경 살피기

   Time

     2017년 08월 24일 

   OS

     Virtual Box - Linux(Ubuntu 16.04 LTS)

   Language

     Python 2.7




GIL ( Global Interpreter Lock ) 의 약자로 하나의 파이썬 인터프리터에서는 하나의 작업만 실행이 가능한 것이다. 하나의 인터프리터가 실행이 될 때, global 변수로 제어를 하기때문에, 여러 Thread가 동시에 수행할 경우 데이터가 엉망이 되기 때문에 한번에 하나의 Thread만이 인터프리너 내부 global 변수에 접근가능하도록 해 놓은 것이다. 


따라서 Multi Thread를 사용할 경우 다른 Thread로 들어가기 전에 Lock을 걸어놓고 움직이기 때문에 결국 한번에 하나의 Thread가 time sharing하는 형태로 실행이 된다. 결과적으로, Multi core CPU라고 하더라도, Thread를 사용할 경우 그다지 효과가 없고 오히려 실행시간이 늘어나게 된다.

I/O 같이 시간을 많이 잡아먹는 경우에는 효과가 있다.