[개발언어]/Python

GIL (Global Interpreter Lock)

_niel 2022. 10. 25. 12:24

1. 한번(순간)에 1개의 스레드만 유지하는 락

2. 한스레드가 다른스레드를 차단해서 제어(메모리 접근등)을 얻는것을 막아주는것

3. 이러한 이유때문에 파이썬에서는 스레드로 병렬성 연산을 수행하지 못한다.

4. 대신에 파이썬 멀티쓰레딩은 동시성을 사용하여 io bound 코드에서 유용하게 사용할 수 있다.

5. 하지만 cpu bound코드에서는 GIL에 의해 원하는 결과를 얻을 수 없다.

6. 따라서 cpu bound의 성능향상을 위해 멀티프로세싱을 도입한다.

7. 다만 멀티프로세싱은 프로세스를 여러개 복제하고, 각 프로세스끼리 메모리를 공유하지 않기 때문에 통신을 위한 직렬화 역직렬화에 대한 비용이 큰 단점이 있다.

'[개발언어] > Python' 카테고리의 다른 글

shell 커맨드 파이썬에서 실행하기 - subprocess  (0) 2024.02.27
is와 == 의 차이  (0) 2022.10.25
with문에 대한 이해  (0) 2022.10.21
파이썬 sorted 사용하기  (0) 2022.04.09
파이썬 문자열 처리  (0) 2022.04.08