728x90

Python GIL 2

[Python] GIL 관련 OS, 컴퓨터구조가 중요한 이유

안녕하세요 오늘은 그동안 프로그래밍을 하는 입장에서 하나둘씩 공부해보다가 제가 배운 걸 도움이 될까하여 씁니다. 평소에 단순하게 소규모의 코딩만 하다가 어느 순간 많은 데이터를 다루게 되면 속도 이슈가 나오게 되고, 고민해서 검색해보면 멀티프로세싱, 멀티쓰레드 쓰면 속도가 향상된다는 이야기가 나옵니다. 왜 멀티프로세스, 멀티쓰레드가 빠를까요?? 어떨 때 써야할까요?? 이런 얘기를 하다보면 자연스럽게 운영체제, 컴퓨터구조에 관한 이야기로 빠지게 됩니다. 기본적으로 알아야 할 것은 프로세스와 쓰레드의 차이입니다. 용어 설명부터 들어가보면, 프로세스는 컴퓨터 입장에서 실행되어 돌아가는 프로그램입니다. 쓰레드는 무엇일까요? 쓰레드는 프로세스 내부에서 동작하는 실행하는 흐름의 단위입니다. 프로세스 내부엔 쓰레드가..

[Python] Multiprocessing으로 속도 개선해보기

TL;DR 3줄요약 파이썬은 GIL으로 인해 쓰레드를 사용하는 데 제약이 있다. Multiprocessing이냐 multi thread냐는 상황에 따라 다르다. 병렬처리에서는 for문 구조를 줄이는게 핵심이다. 데이터셋 전처리 작업으로 코딩하는 와중에, 시간이 너무 오래 걸려서 파이썬 병렬처리에 관하여 공부를 많이 했다. 새롭게 알게 된 점은 파이썬에서는 GIL(Global Interpreter Lock) 이라고 하여, 다른 언어들과 다르게 물리적으로는 1프로세스에 1개의 쓰레드만 사용할 수 있다. 이에 대해선 파이썬을 개발한 귀도 반 로섬이 의도적으로 설계한 것이라고 한다. I’d welcome a set of patches into Py3k only if the performance for a sin..

728x90