티스토리 뷰
안녕하세요. Teus입니다.
이번 포스팅은 Python의 GIL 관련 Python.org내부 discussion 번역& 정리 입니다.
2023년 글이라, 현재는 어떻게 진행되고있는지는 불확실 하지만
대략 2023년에 Python의 GIL관련 핵심개발자(Core Dev)의 생각을 옅볼 수 있습니다.
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단계를 통해서 어떻게 할거냐면...
- 단기적으로, no-GIL 빌드를 3.13나 이후 버전에다가 실험적으로 추가할 것이다. 커뮤니티 지원은 기대하기 어렵기 때문에, 실험적인 빌드로 핵심개발자 사이에서 테스트 할 것이다. 커뮤니티의 지원을 위해서는 API 디자인과 패키징, 배포 관점에서 해야할 일을 명확히 할 시간이 필요하다. 그리고 no-GIL을 디폴트로 배포하지 않을 것이다.
- 중기적으로, 커뮤니티지원을 통해서 no-GIL의 사용이 실제 productuion에서 가능하다는 확신이 생기면, no-GIL빌드를 지원 지원 하겠지만 디폴트로 배포는 바로 하지는 않고, 추후에 날짜와 Python버전을 명시해서 바꿀 것이다. 그 시기는 상황에 따라 정할 예정이다. 2년 또는 그 이상이 걸릴 것으로 예상하며, 이게 시행되면 일부 패키지 배포자들이 no-GIL을 디폴트로 배포하기를 기대한다.
- 장기적으로, no-GIL빌드를 디폴트 배포로 하고, GIL을 제거할 것이다. 오래 기다리지 않을 것이다. 왜냐면 두개 빌드 다 가져가는건 너무 힘들거든. 5년 그 이상이 걸리지 않을까 예상한다.
'Python 잡지식' 카테고리의 다른 글
[Python]CPython with JIT(3.13버전 실험기능) (1) | 2024.11.23 |
---|---|
[Python]Free-threaded CPython(3.13버전 릴리즈) (0) | 2024.11.13 |
[Python]MultiProcessing 탐구 (0) | 2024.08.21 |
[Python]Python의 asyncio 탐구 (0) | 2024.07.10 |
[Python]비동기로 parquet 파일 읽어들이기 (0) | 2024.07.06 |
- Total
- Today
- Yesterday
- 동적계획법
- 병렬처리
- 분할정복
- 코딩테스트
- GDC
- Greedy알고리즘
- AVX
- Sort알고리즘
- 자료구조
- Search알고리즘
- 컴퓨터그래픽스
- 완전탐색 알고리즘
- 프로그래머스
- 알고리즘
- 사칙연산
- SIMD
- hash
- heap
- Python
- prime number
- 이분탐색
- stack
- C++
- git
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |