-final project 백엔드: 사용자에게 피드백 받은 부분 수정, 최종 발표
-python gil
-매일 백준 알고리즘 문제 풀이
python 인터프리터
Python 인터프리터란, Python으로 작성된 코드를 한 줄씩 읽으면서 실행하는 프로그램을 말한다. 그 프로그램의 구현체로는 여러 가지가 있을 수 있는데, 현재 Python 인터프리터의 표준 구현체로 받아들여지고 있는 것은 바로 CPython이다. CPython은 C 언어를 이용하여 구현한 Python 인터프리터이다.
python gil - Global Interpreter Lock(전역 인터프리터 락)
Python의 객체들에 대한 접근을 보호하는 일종의 뮤텍스(Mutex)로서, 여러 개의 쓰레드가 파이썬 코드를 동시에 실행하지 못하도록 하는 것이라고 한다. 즉, 한 프로세스 내에서, Python 인터프리터는 한 시점에 하나의 쓰레드에 의해서만 실행될 수 있다는 것이다.
한마디로 GIL이 Python의 객체들에 대한 접근을 보호하는 일종의 뮤텍스(Mutex)라는 것.
여러 쓰레드가 Python 인터프리터를 동시에 실행할 수 있게 두면 각 객체의 참조 횟수가 올바르게 관리되지 못할 수도 있고, 이로 인해 GC가 제대로 동작하지 않을 수도 있다. 이러한 Race Condition은 뮤텍스(Mutex)를 이용하면 예방할 수 있다.
뮤텍스(Mutex)란, 멀티 쓰레딩 환경에서 여러 개의 쓰레드가 어떠한 공유 자원에 접근 가능할 때 그 공유 자원에 접근하기 위해 가지고 있어야 하는 일종의 열쇠와 같은 것이다.
Python에서 모든 것은 객체이고, 객체는 모두 참조 횟수를 가진다. 따라서 GC의 올바른 동작을 보장하려면 결국 모든 객체에 대해 뮤텍스를 걸어줘야 한다는 말이 된다. 이는 굉장히 비효율적이며, 만약 이를 프로그래머에게 맡길 경우 상당히 많은 실수를 유발할 수도 있는 문제이다.
그래서 결국 Python은 애초에 한 쓰레드가 Python 인터프리터를 실행하고 있을 때는 다른 쓰레드들이 Python 인터프리터를 실행하지 못하도록 막는 것이다. 이를 보고 "인터프리터를 잠갔다"라고 표현한다.
즉, Python 코드를 한 줄씩 읽어서 실행하는 행위가 동시에 일어날 수 없게 하는 것이다. 그러면 모든 객체의 참조 횟수에 대한 Race Condition을 고민할 필요도 없어진다. 뮤텍스를 일일이 걸어줄 필요도 없어지는 것이다. 이것의 GIL의 존재 이유이다.
참조 사이트
마지막 주간! 18주차로 캠프가 막을 내렸다. 만감이 교차한다. 함께 성장한 캠퍼들, 밤낮으로 실직적인 조언과 지식의 힘을 주신 튜터님, 세심한 관리 열정 매니저님.. 모두가 각자 목표를 가지고 열심히 끝까지 했기에 무사히 수료를 하게 되었다.
혼자 공부할 때는 시작도 과정도 '이게 맞나?' 의문을 떨칠 수 없었는데, 개발자 선배님들의 조언과 가르침 정보 등등 얼마나 큰 힘이 되었는지! 이제는 하루하루 정말 죽어라 최선을 다한 내 과거 이력과 또 앞으로 성장하기 위한 현재의 노력으로 지원사격을 할 때가 됐다.
걱정도 되지만 일단 지원을 해야 내 현재를 알고 기업의 현 상황도 보다 자세히 알게 된다. "지속적인 자기개발"을 꾸준히 해 나가면서 꾸준한 지원사격 화이팅.
-시원섭섭하지만 지금도 종종 연락하는 여러분들 고기 먹을 때 만나요ㅜ
-지금까지 익힌 기술들을 더 단단하게 만들기.
-django 공식홈페이지는 사랑입니다.
-취업에 뛰어든 내 자신 당당하자 : )