Python은 고급 프로그래밍 언어입니다.
최근에 뉴스가 깨졌습니다. Python 프로젝트 운영 위원회는 Python 언어 확장 제안 «PEP-0703″, CPython에서 전역 인터프리터 잠금을 선택 사항으로 만들고 기본적으로 GIL(Global Interpreter Lock) 없이 CPython 컴파일 모드의 포함을 정의합니다.
PEP-0703 기본적으로 GIL 사용을 중지하도록 정의합니다. 그러나 비활성화하려면 빌드 옵션 "–sin-gil"을 추가하십시오. 어떻게 지내세요l 새로운 모드는 병렬화 문제를 해결할 것으로 예상됩니다. 전역 잠금이 다른 스레드의 공유 개체에 대한 병렬 액세스를 허용하지 않기 때문에 멀티 코어 시스템에서 작업이 발생합니다.
장기적으로(5년 후), 인터프리터는 기본적으로 전역 비잠금 모드로만 변경될 예정입니다., 동시에 GIL로 컴파일하기 위한 지원을 중단합니다.
no-GIL 제안에 대한 설문조사에 응답해 주셔서 감사합니다. 일반적인 아이디어와 특히 PEP 703 모두에 대해 일반적인 감정이 긍정적이라는 것은 분명합니다. 이사회도 두 가지 모두에 대해 대체로 긍정적입니다. 우리는 PEP 703을 받아들일 생각이지만 아직 승인 세부 사항을 작업 중입니다.
과거에 몇 번 그랬듯이 PEP 수락과 관련된 세부 사항에 대한 현재 생각과 함께 PEP 수락 의사를 전달하고자 합니다.
그 외에도 XNUMX단계로 진행될 예정인 변경 사항은, 단기, 중기 및 장기입니다. 을 고려하면 첫 번째 단계에서 기본적으로 GIL을 비활성화하는 것은 비실용적입니다. 가비지 수집기, 메모리 관리 시스템 및 잠금 구성을 위한 프리미티브 변경과 관련된 오버헤드 때문입니다. 예를 들어 스레드 격리를 위해 참조 횟수를 사용하기 때문에 단일 스레드 스크립트의 성능이 저하됩니다(pyperformance 테스트 스위트에서 10%). 동시에 코드 실행의 선형 속도보다 병렬화의 부족이 더 심각한 문제인 과학적 컴퓨팅에서 GIL을 비활성화해야 할 수도 있습니다.
두 번째 단계에서는 기본적으로 확인을 기다립니다. 그리고 지역사회의 충분한 지원이 있기 때문에 "non-GIL is viable"의 사용 GIL-less 빌드가 지원되지만 기본값은 아닌지 확인하십시오.
마지막 단계에서 no-GIL은 이미 기본값이 됩니다. GIL의 모든 흔적이 제거됩니다(불필요하게 이전 버전과의 호환성을 깨뜨리지 않고).
관찰되는 것은 GIL에서 멀어지는 작업은 실수를 반복하지 않도록 매우 신중하게 수행됩니다. 홍보하다가 생긴 일 파이썬 3: 비 GIL 빌드는 이전 버전의 Python과의 호환성을 보장해야 하며 비 GIL 빌드에서 작동하는 데 필요한 타사 코드 변경 사항은 GIL 빌드에서도 작동해야 합니다.
GIL이 아닌 빌드에 대해 Python 4로 버전 번호를 다시 매길 계획은 없습니다. ABI 호환성을 유지할 것이기 때문입니다.
프로세스 전반에 걸쳐 우리(SC뿐만 아니라 핵심 개발자)는 진행 상황과 제안된 일정을 재평가해야 합니다. 우리는 이것이 또 다른 703년 간의 역호환성 싸움이 되는 것을 원하지 않으며 PEP XNUMX을 취소하고 문제가 되는 것 같으면 다른 해결책을 찾을 수 있기를 원하므로 계속 작업하는 것이 가치가 있는지 정기적으로 확인해야 합니다.
우리는 이것이 수용의 정확한 세부 사항을 해결함에 따라 PEP의 미래에 대해 어느 정도 명확성을 제공하기를 바랍니다. SC는 앞으로 몇 주 안에 승인을 마무리하기 위해 노력할 것입니다.
GIL이 아닌 빌드로 완전히 전환하기 전에 이러한 빌드에 대한 완전한 커뮤니티 지원을 달성하고 기존 코드에서 안전한 멀티스레딩을 가능하게 하는 추가 C API 및 Python API를 제공할 계획입니다.
마지막으로 이미 언급한 바와 같이 5단계로의 전환은 최소 0703년 후에 발생할 수 있으며 PEP-3.13의 가능한 날짜는 내년 가을로 예정된 Python XNUMX의 릴리스입니다.
낮잠 그것에 대해 더 알고 싶어, 당신은 세부 사항을 확인할 수 있습니다 다음 링크에서.