패스잇
백엔드 개발 · 중급

Python의 GIL(Global Interpreter Lock)이란 무엇이며, 멀티스레딩에 어떤 영향을 주나요?

힌트 · CPU 바운드 vs I/O 바운드 작업에서의 차이를 생각해보세요.

GILCPython멀티스레딩병렬성컨텍스트 스위칭

모범답안

Python의 GIL(Global Interpreter Lock)은 CPython 인터프리터에서 단일 Python 바이트코드 실행 스레드만 실행되도록 하는 메커니즘입니다. 즉, 여러 스레드가 동시에 Python 코드를 실행하는 것을 막습니다.

멀티스레딩 환경에서 GIL은 CPU 바운드 작업의 병렬성을 제한합니다. 여러 스레드를 사용하더라도 실제로 동시에 코어가 활용되지 않기 때문에, 싱글 스레드보다 오히려 성능이 떨어질 수도 있습니다. 컨텍스트 스위칭 오버헤드가 발생하기 때문입니다.

하지만 I/O 바운드 작업에서는 GIL의 영향이 적습니다. 스레드가 I/O 작업을 기다리는 동안 GIL이 해제되어 다른 스레드가 실행될 수 있기 때문입니다. 따라서 I/O 바운드 작업에서는 멀티스레딩이 유용할 수 있습니다.

GIL을 우회하기 위해 멀티프로세싱을 사용하거나, GIL이 없는 다른 Python 인터프리터(예: Jython, IronPython)를 사용하는 방법도 있습니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 Python 면접 질문

← Python 면접 질문 전체 보기