목록Programming/python (1)
공부기록
GIL (Global Interpreter Lock)
GIL 인터프리터를 cpython을 사용하고 다중 쓰레드 프로그래밍을 할 경우, 한 쓰레드 만이 인터프리터를 사용할 수 있는 상황, 즉 인터프리터에 mutex가 걸려있는 것을 말한다. 왜 일어나는가 cpython은 gc를 위해 reference counting을 사용한다. 문제는, reference count를 하는 객체를 사용하는 쓰레드들이 서로 상호배제 되어야만 메모리 누수와 같은 문제가 생기지 않는다는 것이다.이 때문에, cpython은 interpreter 자체에 락을 걸어 문제를 해결하게 되었다. 각 객체가 reference count 변수를 가지기에 객체마다 스스로를 위한 mutex를 가지는 것을 생각해 볼 수 있다. 하지만 이 경우, 많은 mutex에 의해 성능이 저하되고, 여러 개의 loc..
Programming/python
2021. 5. 16. 18:59