파이썬에서 메모리를 관리하는 방법.
어떤 객체의 참조횟수가 0이라면 메모리를 회수한다.
하나의 값에 여러 쓰레드가 접근하여 올바르지 않게 값이 쓰이거나 읽히는 것
멀티 스레딩 환경에서 하나의 스레드가 작업 중일때 다른 스레드의 접근을 막는 것
하나의 스레드가 파이썬 객체에 접근 중이라면 나머지 스레드가 접근할 수 없도록 인터프리터에 lock을 거는 것
파이썬은 garbage collection방법으로 메모리를 관리하기에 race condition이 발생하지 않도록 파이썬의 모든 객체에 뮤텍스를 걸어야한다. 이는 매우 비효율적이다.
따라서, 파이썬 인터프리터에 lock을 걸어 하나의 스레드가 파이썬 인터프리터를 실행하고 있으면 다른 스레드가 파이썬 인터프리터를 실행하지 못하게 하는 것이다.
참고
https://dgkim5360.tistory.com/entry/understanding-the-global-interpreter-lock-of-cpython
https://it-eldorado.tistory.com/160