티스토리 뷰

728x90
반응형

안녕하세요. Teus입니다.

이번 포스팅은 Python의 GIL 관련 Python.org내부 discussion 번역& 정리 입니다.

2023년 글이라, 현재는 어떻게 진행되고있는지는 불확실 하지만

대략 2023년에 Python의 GIL관련 핵심개발자(Core Dev)의 생각을 옅볼 수 있습니다.

Python.org GIL토론글

0. 요약.

CPython의 GIL을 제거하는 빌드를 만들고, 이를 커뮤니티와 싸바싸바 잘 하여서 제거 해보겠다는 마스터 플랜 입니다.

중간에 Python2 -> 3의 이야기가 있는데, Python3으로 넘어가는 과정에서 하위호환을 챙기지 못한 부분이 두고두고 문제가 되었던 것으로 판단됩니다.

Python4가 아닌, Python3에서 GIL관련된 문제를 해결해 보겠다는 장기적인 로드맵을 확인해 보실 수 있습니다.

Python3 내에서 no-GIL / GIL을 공존하다가, 점차 no-GIL을 디폴트로 하겠다는 것으로 판단됩니다.

1. 번역본(의역이 강합니다)

해당 PEP703(https://peps.python.org/pep-0703/) 관련 내용 입니다.

Steering Council은 PEP703이나 GIL을 제거하는 방향에 긍정적 입니다.

PEP703을 받아들이는데 세부적인 내용관련 작업 중 이지만, 해당 관련해서 우리의 의도와 우리의 생각관련 세부적인 논의사항 입니다.

기본적인 전제

-. 장기적으로, No GIL Build는 오직 하나의 빌드로만 만들어 져야한다. no-GIL과 GIL버전의 분리는 빌드는 원하지 않는다.
-. 하위호환 문제에 관해서 조심스럽다. Python3과 같은 상황이 되풀이 되기 원하지 않는다, 때문에 no-GIL상황에서 기존 코드가 문제없이 동작하게 만들기를 희망. 이거는 Python4가 아니기 때문이다.
-. no-GIL로 가기 전에 커뮤니티의 도움이 필요하다. 새로운 빌드에 대해서 커뮤니티의 경험험을 미리 알 필요가 있다. 때문에 기존 C APIs와 Pytohn APIs중 Thread Safety한지는 기존 코드에서 솎아내야한다.
-. no-GIL을 기본으로 바꾸기 전에, 이 작업은 이득보다는 실이 더 클 가능성이 높다(얻는건 적은데, 문제가 생기면 엄청 큼). 때문에 완전한 확신이 들때 까지는 no-GIL은 구분이 되어야 할거다.

그래서 어떻게 3단계를 통해서 어떻게 할거냐면...
  1. 단기적으로, no-GIL 빌드를 3.13나 이후 버전에다가 실험적으로 추가할 것이다. 커뮤니티 지원은 기대하기 어렵기 때문에, 실험적인 빌드로 핵심개발자 사이에서 테스트 할 것이다. 커뮤니티의 지원을 위해서는 API 디자인과 패키징, 배포 관점에서 해야할 일을 명확히 할 시간이 필요하다. 그리고 no-GIL을 디폴트로 배포하지 않을 것이다.
  2. 중기적으로, 커뮤니티지원을 통해서 no-GIL의 사용이 실제 productuion에서 가능하다는 확신이 생기면, no-GIL빌드를 지원 지원 하겠지만 디폴트로 배포는 바로 하지는 않고, 추후에 날짜와 Python버전을 명시해서 바꿀 것이다. 그 시기는 상황에 따라 정할 예정이다. 2년 또는 그 이상이 걸릴 것으로 예상하며, 이게 시행되면 일부 패키지 배포자들이 no-GIL을 디폴트로 배포하기를 기대한다.
  3. 장기적으로, no-GIL빌드를 디폴트 배포로 하고, GIL을 제거할 것이다. 오래 기다리지 않을 것이다. 왜냐면 두개 빌드 다 가져가는건 너무 힘들거든. 5년 그 이상이 걸리지 않을까 예상한다.
728x90
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함