목차1. 왜 Python에는 GIL이 있는가2. Python GC가 작동하는 원리

1. 왜 Python에는 GIL이 있는가

왜 Python에는 GIL이 있는가

1. 각 레퍼런스 (변수 등)의 참조횟수를 관리하기 위해 레퍼런스 카운팅 방식을 파이썬은 사용한다.

2. 레퍼런스 카운팅의 변화는 동시 참조 후 쓰기 같은 무결성을 위배하는 행위를 하면 안 된다. (메모리 유실, 누출이 생길 수 있다.)

3. 결론적으로 파이썬은 이를 위해 동시에 두 쓰레드 이상 레퍼런스 카운트에 접근할 수 없도록 되었다.

4. 또한, 파이썬이 설계될 당시에는 고작해야 듀얼코어였기 때문에 지금처럼 쓰레드 사용시 성능의 저하가 크지 않았고, GIL은 합리적이었다.

2. Python GC가 작동하는 원리

Python GC가 작동하는 원리

1. 위에서 설명한 레퍼런스 카운팅을 파이썬은 가비지 컬렉터에 이용하고 있다.

2. 간단하게 설명하면, 카운팅이 0이 되면 메모리를 회수한다.