이번 포스트에서는 파이썬의 Global Interpreter Lock (이하 GIL) 에 대해서 다룬다. 1. 멀티쓰레딩 일반적으로 멀티쓰레딩은 하나의 프로세스에서 여러 개의 쓰레드를 생성해 하나의 호스트에서 병렬 처리를 수행하는 기능을 말한다.
멀티코어 환경에서 여러 개의 쓰레드가 특정 작업을 나누어 처리하면 수행 시간을 꽤 줄일 수 있다. 그렇지만 멀티쓰레딩이 만능은 아닌데, 공유되는 자원 또는 행위 (예를 들어 글로벌 변수나 파일 읽기,쓰기와 같은 I/O 작업) 에 대해 여러 개의 쓰레드가 동시에 접근해야 한다면 세마포어, 뮤텍스 등의 동기화 방법을 사용해야만 한다.
이를 위해 C++이나 C에서는 자체적으로 세마포어나 뮤텍스 라이브러리가 제공되며, 자바에서는 synchronized 지시자가 아예 따로 존재한다. 여기까지는 컴퓨터공학 정규 커리큘럼에서도 배울 수 있는 쉬운 개념들이고, 아마 모두가 알고 있을 것이라고 생각한다. 2.
파이썬의 멀티 쓰레딩 위에서 말한대로라면 멀티쓰...