파이썬 Multi-Threading과 GIL에 대해서 알아두면 좋은 4가지!


  1. Concurrency(동시성)은 여러 작업이 순서 상관 없이 혼재되어 수행할 수 있음을 의미하고, Parallelism(병렬성)은 여러 작업이 동시에 수행될 수 있음을 의미합니다. 파이썬 threading 모듈을 사용하면 스레드 기반으로 동시성을 제공할 수 있습니다.

  2. 파이썬 인터프리터(Cpython)는 기본적으로 Thread-safe하지 못합니다. 인터프리터는 작업을 수행하기 위한 목적으로 다양한 전역 변수들을 사용하는데, 이는 모든 스레드에서 접근 가능하여 문제가 발생할 수 있습니다. 이를 간편하게 통제하고 관리하기 위해 인터프리터는 GIL(Global Interpreter Lock)이라는 글로벌 락을 사용합니다.

  3. 파이썬 GIL(Global Interpreter Lock)은 한 번에 하나의 스레드만 실행할 수 있도록 하는 메커니즘입니다. CPU 바운드 작업(계산 집중적 작업)에서는 GIL 때문에 멀티스레딩이 기대하는 성능 향상을 제공하지 못할 수 있습니다. 그러나 I/O 바운드 작업(파일 시스템 작업, 네트워크 요청 등)에서는 GIL의 영향을 덜 받기 때문에 멀티스레딩이 유용할 수 있습니다.

  4. 파이썬 3.13 버전부터는 PEP-703에서 제안한 --disable-gil 컴파일 옵션이 추가될 예정입니다. GIL을 사용하는 버전과 사용하지 않는 버전이 제공될 예정이고, 향후 2-3 버전 릴리즈 안에는 환경 변수를 통해서 GIL을 제어할 수 있도록 할 예정이라고 합니다.(https://github.com/python/cpython/issues/108219)


https://brunch.co.kr/@growthminder/140

[Python] Multi-Threading & GIL

Brunch Story

[Python] Multi-Threading & GIL

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2024년 3월 31일 오후 4:14

댓글 0