# gh-116167: GIL 비활성화 허용

> Clean Markdown view of GeekNews topic #13763. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=13763](https://news.hada.io/topic?id=13763)
- GeekNews Markdown: [https://news.hada.io/topic/13763.md](https://news.hada.io/topic/13763.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2024-03-12T09:45:28+09:00
- Updated: 2024-03-12T09:45:28+09:00
- Original source: [github.com/python](https://github.com/python/cpython/pull/116338)
- Points: 1
- Comments: 0

## Topic Body

### GIL 비활성화 허용

- `PYTHON_GIL=0` 또는 `-X gil=0`을 설정하여 GIL(Global Interpreter Lock)을 비활성화할 수 있게 됨.
- GIL 관련 데이터 구조는 초기화되지만, GIL을 비활성화하면 `take_gil()`과 `drop_gil()`이 조기에 반환되도록 함.
- GIL을 비활성화한 상태에서 몇 가지 테스트와 작은 프로그램을 실행해 보았고, 기본적인 스레드 프로그램도 때때로 작동함.
- 전체 테스트 스위트를 실행하려고 하면 `test_asyncio`에서 빠르게 충돌함.

### GIL 비활성화 메커니즘 추가

- GIL 비활성화 메커니즘을 추가하는 이슈(#116167)에 대한 논의가 있었음.
- 자유 스레드 빌드에서 GIL을 비활성화할 수 있는 기능이 추가됨.
- GIL을 다시 활성화하는 작업(#116322)과 기본적으로 GIL을 비활성화하는 작업(#116329)을 추적함.

### 코드 리뷰 및 테스트

- 코드 리뷰 요청과 테스트 케이스 추가에 대한 논의가 있었음.
- `PYTHON_GIL` 환경 변수에 대한 문서화와 사용자 피드백을 얻기 위한 제안이 있었음.
- `-X gil` 옵션 추가와 `sys.flags`에 반영, 환경 변수를 다루는 테스트 수정이 포함됨.

### GN⁺의 의견

- 이 변경은 Python 커뮤니티에 큰 영향을 미칠 수 있는데, GIL은 Python의 멀티스레딩 성능에 제한을 주는 잘 알려진 요소이기 때문임.
- GIL을 비활성화하는 기능은 성능 향상을 가져올 수 있지만, 동시에 안정성과 호환성 문제를 일으킬 수 있어 신중한 접근이 필요함.
- GIL 없이 Python을 실행하는 것은 특히 병렬 처리와 관련된 작업에서 이점을 제공할 수 있으나, 기존의 많은 Python 코드가 GIL을 전제로 작성되어 있어서 이러한 변화가 가져올 영향을 평가하는 것이 중요함.
- 다른 언어나 런타임에서는 GIL과 유사한 메커니즘을 사용하지 않는 경우가 많으며, 예를 들어 Node.js는 비동기 I/O를 통해 단일 스레드 성능을 극대화하는 접근 방식을 취함.
- 이 기술을 도입할 때는 기존 코드의 스레드 안전성을 검토하고, 필요한 경우 리팩토링을 고려해야 함. GIL을 비활성화함으로써 얻을 수 있는 성능 이점과 안정성 간의 균형을 잘 맞추는 것이 중요함.

## Comments



_No public comments on this page._
