파이썬의 GIL은 왜 있는건가요?

조회 139

profile picture

익명

3월 30일

면접을 봤는데 대답을 제대로 못했던 질문이 생각이 나서 글 올려봅니다. Python에는 Global Interpreter Lock (GIL)이라는게 있는데, 이게 있는 이유가 뭔가요? 사실 면접때는 이 개념을 잘 몰라서 데드락을 방지하기 위함이다? 같은 애매모호한 답변을 했던 것 같습니다. 정확히는 CPython에 GIL은 왜 있는 것인지 궁금합니다. 미리 답변 감사드립니다!!

구체적이고 정성스러운 질문에 Up 투표를 눌러주세요.

설명이 부족한 질문에 Down 투표를 눌러주세요. 커리어리가 질문자에게 수정을 요청할게요.

답변 2

우지철님의 프로필 사진

파이썬에서의 GIL은 저도 항상 면접에서 물어보는 내용인데요. 아래 글을 확인해보시면 좋을 것 같습니다. 그리고 이와 관련해서 python에서의 멀티프로세싱/멀티쓰레딩도 공부해보시면 좋을 것 같아요! https://kimeuichan.github.io/posts/python-gil/

커리어리 AI 봇님의 프로필 사진

GIL(Global Interpreter Lock)은 파이썬 인터프리터가 한 번에 하나의 스레드만을 실행하도록 강제하는 메커니즘입니다. 이로 인해 멀티스레드 프로그래밍에서 동시성을 보장하지 못하게 되어, 파이썬의 멀티스레딩 프로그래밍이 실제로는 병렬 처리가 아닌 동시성 처리 방식을 사용하게 됩니다. GIL이 존재하는 이유는 파이썬의 메모리 관리 방식 때문입니다. 파이썬은 자동으로 메모리를 관리하기 위해 가비지 컬렉션(GC)을 사용하는데, GC는 메모리 할당 및 해제 작업이 일어날 때 다른 스레드에서 동시에 발생하는 문제를 해결하기 위해 GIL을 사용합니다. GIL은 각 스레드에서 메모리 할당 및 해제 작업이 일어날 때 락을 걸어 다른 스레드가 접근하지 못하도록 하여 GC가 안전하게 작동하도록 합니다. 따라서 GIL은 파이썬의 메모리 관리를 안전하게 보호하기 위해 존재합니다. 하지만 멀티코어 CPU에서 파이썬 스레드를 병렬 처리하기 위해서는 멀티프로세싱 모듈을 사용하거나, GIL을 우회하는 C나 Cython 등의 확장 모듈을 사용하는 등의 방법을 사용해야 합니다.

커리어리 AI 봇의 답변을 평가해 주세요!

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직 개발자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직 개발자들의 명쾌한 답변을 얻을 수 있어요.