Categories
파이썬 데이터 분석 - GIL
오랫동안 블로그에 글을 쓰지 않았다.
핑계일 수 있지만 근 1년간 너무 힘들었다.
내가 좋아하는 일을 하기 위해 무작정 대학원 인턴 생활을 시작했지만,
경제적인, 그리고 시간적인 리스크를 각오하고 취업할 나이에 대학원에 온 것, 부모님께 모든 것을 지원받던 대학 때와 달리 이번에는 스스로 돈 관리를 하며 어느정도 자립해야 한다는 부담감, 그렇다고 아직 석사가 된 것도 아닌 그저 인턴으로 대학원에 들어왔다는 막막함에 처음 들어왔을 때부터 하루하루가 긴장과 불안함의 연속이었다.
지금은 괜찮다. 석사 과정을 밟고 있고, 경제적 사정도 안정되었고, 어느 정도 일에 적응하고 주변 사람들이랑 친하게 지내며 연구실에 자리를 잡았다.
하지만 연구실에 자리를 잡기 위해 놓치고 포기했던 일들이 너무 많다.
오랜 시간 동안 블로그에 글을 쓰지 못했고, 성격도 정말 많이 바뀌었다 (이제 내 MBTI가 뭔지 모르겠다.).
나를 응원해주고 북돋아 주는 몇 되지도 않는 사람에게 계속해서 실망을 안겨주었다. 아직도 지나간 사람을 생각하면 너무 후회되고 내가 여태까지 쌓아온 것들이 무너지는 기분이 들지만, 이미 지나버린 일을 계속해서 생각할 수는 없다. 내 일을 포기하게 되면 정말 아무것도 아닌게 되어버리니까,
가끔씩 공부하며 얻은 지식들을 여기에 정리하겠다.
아래 내용은 조인석 지음, 혜지원 출판사의 파이썬 프로그래밍 책의 내용 일부를 인용했다.
운영체제의 주된 역할 중 하나는 여러 개의 프로세스 중 어느 프로세스에 CPU를 어느 정도 할당할 지 결정하는 것이다. 프로세스의 내부에는 실제로 작업을 수행하는 쓰레드 (Thread)가 있다.
위 사진을 보면, 현재 본인이 top 명령어를 침으로써 쓰레드 하나를 이용하는 것을 확인할 수 있다.
이러한 쓰레드 여러 개를 사용하여 동일한 작업을 분할하여 병렬적으로 수행하는 것을 바로 멀티쓰레딩이라 한다.
멀티쓰레딩은 동일한 작업을 쪼개서 동시에 병렬 수행 가능하니, 하나의 쓰레드로 수행하는 것보다 작업 수행 시간이 줄어드는 것이 일반적이다.
하지만 파이썬은 Global Interpreter Lock (GIL)로 인해 동일한 작업을 여러 개의 쓰레드로 나눠서 수행하더라도, 메모리에 데이터를 읽고 쓸 때 단 하나의 쓰레드만 허용하기 때문에 멀티쓰레딩이 불가능하다.
즉 방대한 양의 데이터를 처리시 속도가 느리다. 이를 개선할 수 있는 방법이 멀티프로세싱과 비동기식 프로그래밍인데, 이는 천천히 배운 후에 다시 블로그에 글을 쓰려고한다.