멀티 스레딩에서는 메모리를 공유하기에 병렬적으로 구현할 때 하나에서 에러가 발생하면 다른 부분에서도 에러가 발생할 수 있음
이러한 문제를 해결하기 위해 파이썬에서는 전역 인터프리터 잠금(GIL, Global Interpreter Lock) 도입: 한 순간에 한 개의 스레드만 유지하는 락, 한 스레드가 다른 스레드를 차단하여 다른 스레드가 제어를 얻는 것을 막아 멀티 스레딩의 위험으로부터 보호함
-> 파이썬에서는 스레드로 병렬성 연산을 수행하지 못하며 동시성으로 수행되어야만 함
-> 파이썬 멀티 스레딩은 동시성을 사용하여 io bound 코드에서 유용하게 사용할 수 있으나 cpu bound 코드에서는 GIL에 의해 원하는 결과를 얻을 수 없음
-> 대안: 멀티 프로세싱 사용(단점 발생)
참고