[파이썬] GIL: 무엇이고, 왜 필요하고, 왜 못 없애나
·
파이썬/GIL 제거 동향
파이썬을 처음 배울 때 파이썬은 멀티 스레드를 사용해도 병렬처리가 되지 않는다고 배웠다. 이것을 GIL이라고 배웠고, 단순히 인터프리터가 멀티스레드 환경에서 한 개의 스레드만 사용하도록 강제했고 우회할 대안으로는 multiprocessing 라이브러리를 사용해서 멀티 프로세스로 접근하라고 외웠다. 실무에서 파이썬을 다루면서 실제 내부 구조를 깊게 파악하고 싶다는 호기심이 생겼다. 특히 최근에 화두가 되고 있는 파이썬의 GIL 제거 시도부터 공부하면서 파이썬 내부를 분석해보고자 한다. 이번 포스트에서는 GIL의 정의와 역사, 그리고 초기 제거 시도에 대해서 다루고자 한다.GIL(Global Interpreter Lock) 이란?인터프리터 프로세스가 멀티 스레드 환경에서 하나의 스레드에게만 Lock을 부여..
[도커] 쌓아보며 익히는 Docker Layer 개념
·
인프라/Docker
회사 업무를 하다 보면, Docker 이미지가 기대한 대로 재사용되지 않는 순간이 있다.이번에 내가 겪은 것도 비슷한 문제였다. 공통으로 사용하는 core 이미지를 만들고, 그 위에 서비스별 수정을 더해 여러 개의 이미지를 운영하고 있었는데, 어느 순간부터 이 공통 core가 재사용되지 않고 pull하는 데 시간이 오래 걸렸다.공통 core의 매니페스트를 열어보니, 특정 시점부터 같은 소스코드에서 만들어진 이미지인데도 layer의 digest가 달라진 것을 확인할 수 있었다. 그래서 디버깅을 하는 김에 Docker Image Layer에 대해 다시 공부해보기로 했다. 먼저 베이스 이미지를 만들고, 그 위에 작은 수정을 더한 뒤 Docker Hub에 올려서 pull할 때 layer가 재사용되는지 직접 ..