내가 이해 한 바로는 Global Interpreter Lock은 하나의 스레드 만 인터프리터에 액세스하고 바이트 코드를 실행할 수 있도록 허용합니다. 그렇다면 주어진 시간에 오직 하나의 쓰레드 만 인터프리터와 메모리를 사용할 것입니다.CPython에서 스레드 안전성에 대해 걱정해야하는 이유는 무엇입니까?
그렇기 때문에 두 스레드가 동시에 인터프리터의 메모리에 액세스 할 수 없기 때문에 경합 사례가 발생할 가능성을 배제하는 것이 합리적이라고 생각하지만 데이터 구조가 "스레드 안전"인지에 대한 경고를 볼 수 있습니다. . 파이썬 인터프리터 (cython과 같은)의 모든 구현을 커버 할 수있는 가능성이 있습니다. 파이썬 인터프리터는 GIL을 끌 수 있고 진정한 멀티 스레딩을 허용 할 수 있습니다.
GIL을 사용할 수없는 인터프리터 환경에서 스레드 안전성의 중요성을 알고 있습니다. 그러나 CPython의 경우 다중 스레드 파이썬 코드를 작성할 때 스레드 안전성을 장려하는 이유는 무엇입니까? CPython 환경에서 발생할 수있는 더 나쁜 점은 무엇입니까?