2021.05.14

“2~5배 더 빠르게”··· 귀도 반 로섬, 파이썬 속도 개선한다

Paul Krill | InfoWorld
파이썬(Python) 창시자 귀도 반 로섬이 파이콘 2021(Pycon 2021)에서 진행된 파이썬 랭귀지 서밋(Python Language Summit)에서 파이썬 속도를 2배에서 5배까지 더 빠르게 만들기 위한 단기 및 장기 계획발표했다
 
ⓒGetty Images

파이썬에는 이미 파이파이(PyPy)와 같은 대체 런타임부터 C/C++로 작성된 랩핑 모듈까지 더 빠르게 실행할 수 있는 여러 방법이 있다. 하지만 C로 작성된 파이썬 참조 구현체이자 가장 널리 사용되는 언어 버전인 C파이썬(CPython) 자체의 속도를 높이는 방법은 거의 없다는 게 반 로섬의 설명이다. 

그에 따르면 단기적으로는 현재 알파 단계 프로젝트로 개발 중인 파이썬 버전 3.11에서 최소한 1가지 이상의 주요 성능 개선 기능을 추가할 예정이다. 파이썬 3.11은 오는 2022년 출시될 계획이다. 

또한 반 로섬은 파이썬 속도를 높이려는 현재 계획이 몇 가지 제약 조건 하에서 진행되고 있다고 설명했다. 이를테면 C파이썬의 어떤 변경사항도 런타임의 ABI(Application Binary Interface)를 손상시켜서는 안 된다. 그래야 C로 작성된 파이썬 확장 프로그램이 있는 그대로 계속 작동한다. 유지보수 용이성 및 간단하고 이해하기 쉬운 코드베이스를 유지하려는 C파이썬의 목표에 따라 변경사항은 점진적으로 이뤄져야 하고 관리할 수 있어야 한다. 그리고 모든 수정은 오픈소스여야 한다고 그는 전했다. 

이러한 제약 조건 속에서 반 로섬과 그의 동료들은 자유롭게 변경할 수 있는 몇 가지 부분도 식별했다고 밝혔다. 예를 들면 파이썬의 바이트코드 시스템, 컴파일러, 인터프리터 등은 버전 간에 변경될 수 있기 때문에 모두 변경 대상으로 지정됐다. 특히 바이트코드는 주요 버전 간의 호환성을 보장하지 않으므로 필요한 경우 크게 변경할 수 있다고 반 로섬은 덧붙였다. 

파이썬 3.11을 타깃으로 하는 첫 번째 제안에는 PEP 659에 설명된 ‘적응형 특정 바이트코드 인터프리터(adaptive, specializing bytecode interpreter)’가 포함된다. 특정 코드 섹션에서 특정 데이터 타입을 참조하는 바이트코드 명령어는 특정 데이터 타입에 대해 바이트코드의 ‘특정’ 버전 인라인으로 대체돼 속도를 높일 수 있다. 개발팀은 약 50%의 잠재적 성능 향상을 예상하고 있다고 언급했다. 

이 밖에 다른 제안으로는 프레임 스택 최적화, 함수 호출 방법 변경, 효율적인 예외 처리 구현, 시작 시간 단축, pyc 바이트코드 캐시 파일 포맷 수정 등이 있다. 

이 모든 변경 사항에는 파이썬에서 가장 많이 제안되는 개선사항인 런타임에서의 머신-코드 생성 또는 JIT 컴파일(JITing)까진 포함되지 않는다. 반 로섬은 이러한 개선사항은 파이썬 3.11 이후에 고려될 예정이라고 전했다. 한편 해당 프로젝트를 위해 수행되는 모든 작업은 이곳에서 확인할 수 있다. ciokr@idg.co.kr
 



2021.05.14

“2~5배 더 빠르게”··· 귀도 반 로섬, 파이썬 속도 개선한다

Paul Krill | InfoWorld
파이썬(Python) 창시자 귀도 반 로섬이 파이콘 2021(Pycon 2021)에서 진행된 파이썬 랭귀지 서밋(Python Language Summit)에서 파이썬 속도를 2배에서 5배까지 더 빠르게 만들기 위한 단기 및 장기 계획발표했다
 
ⓒGetty Images

파이썬에는 이미 파이파이(PyPy)와 같은 대체 런타임부터 C/C++로 작성된 랩핑 모듈까지 더 빠르게 실행할 수 있는 여러 방법이 있다. 하지만 C로 작성된 파이썬 참조 구현체이자 가장 널리 사용되는 언어 버전인 C파이썬(CPython) 자체의 속도를 높이는 방법은 거의 없다는 게 반 로섬의 설명이다. 

그에 따르면 단기적으로는 현재 알파 단계 프로젝트로 개발 중인 파이썬 버전 3.11에서 최소한 1가지 이상의 주요 성능 개선 기능을 추가할 예정이다. 파이썬 3.11은 오는 2022년 출시될 계획이다. 

또한 반 로섬은 파이썬 속도를 높이려는 현재 계획이 몇 가지 제약 조건 하에서 진행되고 있다고 설명했다. 이를테면 C파이썬의 어떤 변경사항도 런타임의 ABI(Application Binary Interface)를 손상시켜서는 안 된다. 그래야 C로 작성된 파이썬 확장 프로그램이 있는 그대로 계속 작동한다. 유지보수 용이성 및 간단하고 이해하기 쉬운 코드베이스를 유지하려는 C파이썬의 목표에 따라 변경사항은 점진적으로 이뤄져야 하고 관리할 수 있어야 한다. 그리고 모든 수정은 오픈소스여야 한다고 그는 전했다. 

이러한 제약 조건 속에서 반 로섬과 그의 동료들은 자유롭게 변경할 수 있는 몇 가지 부분도 식별했다고 밝혔다. 예를 들면 파이썬의 바이트코드 시스템, 컴파일러, 인터프리터 등은 버전 간에 변경될 수 있기 때문에 모두 변경 대상으로 지정됐다. 특히 바이트코드는 주요 버전 간의 호환성을 보장하지 않으므로 필요한 경우 크게 변경할 수 있다고 반 로섬은 덧붙였다. 

파이썬 3.11을 타깃으로 하는 첫 번째 제안에는 PEP 659에 설명된 ‘적응형 특정 바이트코드 인터프리터(adaptive, specializing bytecode interpreter)’가 포함된다. 특정 코드 섹션에서 특정 데이터 타입을 참조하는 바이트코드 명령어는 특정 데이터 타입에 대해 바이트코드의 ‘특정’ 버전 인라인으로 대체돼 속도를 높일 수 있다. 개발팀은 약 50%의 잠재적 성능 향상을 예상하고 있다고 언급했다. 

이 밖에 다른 제안으로는 프레임 스택 최적화, 함수 호출 방법 변경, 효율적인 예외 처리 구현, 시작 시간 단축, pyc 바이트코드 캐시 파일 포맷 수정 등이 있다. 

이 모든 변경 사항에는 파이썬에서 가장 많이 제안되는 개선사항인 런타임에서의 머신-코드 생성 또는 JIT 컴파일(JITing)까진 포함되지 않는다. 반 로섬은 이러한 개선사항은 파이썬 3.11 이후에 고려될 예정이라고 전했다. 한편 해당 프로젝트를 위해 수행되는 모든 작업은 이곳에서 확인할 수 있다. ciokr@idg.co.kr
 

X