memostack
article thumbnail
파이썬 스레드(Thread) 특징과 GIL
Language/Python 2020. 4. 10. 15:12

파이썬의 정책에 의해 멀티 스레드 방식으로 프로그램을 구현하더라도, (번갈아가면서) 하나의 스레드만 실행하게된다. 그래서, 파이썬에서는 멀티 스레드를 통해 원하던 효과를 제대로 볼 수 없다. 아래 GIL에 의해서 하나의 스레드만 실행이 된다. GIL(Global Interpreter Lock)? 파이썬은 모든 자원을 하나의 스레드에서 컨트롤할 수 있게 글로벌 락(Global Lock)을 걸어둔다. GIL 은 하나의 스레드(Thread)에게 모든 자원(Resource)을 점유할 수 있게 해준다. (다른 스레드는 Acquire 할 수 없음) 그렇다고 스레드가 쓸모없는 것은 아니다. 하나의 스레드가 I/O 작업을 하는 동안은 다른 스레드가 점유할 수 있다. I/O 작업이 없는 프로그램이라면, 멀티 스레드 방식..