개발자

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

2023년 03월 30일조회 201

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

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 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 봇의 답변을 평가해 주세요!

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

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

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

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