Offcanvas

PyPy

파이썬 성능 개선을 위한 6가지 프로젝트

파이썬(Python)은 세련되고 편리하지만 파이썬을 사용하는 누구나 알고 있듯이 CPU 집약적인 작업에서 C, 자바 또는 자바스크립트보다 속도가 훨씬 더 느리다. 그러나 느린 속도를 이유로 파이썬을 외면하기에는 다른 많은 장점이 아깝다. 그래서 이 언어의 성능을 근본적으로 높이기 위한 여러 프로젝트가 등장했다.   동일한 하드웨어에서 파이썬의 속도를 더 높이는 방법은 크게 2가지인데, 각각 장단점이 있다.    파이썬에 사용되는 기본 런타임(C파이썬 구현)의 대안을 만드는 방법이다. 큰 작업이지만 결과적으로 C파이썬을 대체할 수 있다. 기존 파이썬 코드를 다시 써서 특정 속도 최적화 기능을 활용할 수 있다. 즉, 프로그래머 측에서 더 많은 작업이 필요하지만 런타임을 변경할 필요는 없다. 지금부터 파이썬 성능을 높이는 6가지 방법을 알아보자. 각 방법은 앞의 2가지 접근 방법 가운데 하나 또는 두 가지의 조합을 사용한다. 파이파이(PyPy) C파이썬의 대안 중에서는 파이파이가 단연 가장 눈에 띈다(예를 들어 쿠오라(Quora)는 프로덕션에서 파이파이를 사용함). 파이파이는 기존 파이썬 코드와의 호환성도 뛰어나므로 기본 런타임이 될 가능성도 가장 높다. 파이파이는 언어의 속도를 높이기 위해 구글 크롬의 V8 자바스크립트 엔진과 마찬가지로 JIT(Just-In-Time) 컴파일을 사용한다. 과거에는 파이썬 3보다 파이썬 2에 더 친화적이었지만 최신 버전의 파이파이는 파이썬 2.7 외에 파이썬 3.6과 3.7도 지원한다. 파이파이는 넘파이(NumPy)와 같이 파이썬 성능을 높이는 데 사용되는 일반적인 라이브러리와의 통합이 오랫동안 원활하지 않았다. 그러나 최근 릴리스에서는 이 문제가 많이 해결됐다. 파이파이의 또 다른 제약은 제대로 된 성능 향상을 얻기 위해서는 어느 정도 워밍업 시간이 필요하므로 서버와 같은 장기 실행 프로그램에는 적합하지만 단발성 스크립트에서는 효과가 떨어진다는 점이다. 또한 실행 파일의 크기가 C파이...

파이썬 파이파이 PyPy 피스톤 Pyston 누이트카 Nuitka 사이썬 Cython 넘바 Numba typed_python

2021.03.05

파이썬(Python)은 세련되고 편리하지만 파이썬을 사용하는 누구나 알고 있듯이 CPU 집약적인 작업에서 C, 자바 또는 자바스크립트보다 속도가 훨씬 더 느리다. 그러나 느린 속도를 이유로 파이썬을 외면하기에는 다른 많은 장점이 아깝다. 그래서 이 언어의 성능을 근본적으로 높이기 위한 여러 프로젝트가 등장했다.   동일한 하드웨어에서 파이썬의 속도를 더 높이는 방법은 크게 2가지인데, 각각 장단점이 있다.    파이썬에 사용되는 기본 런타임(C파이썬 구현)의 대안을 만드는 방법이다. 큰 작업이지만 결과적으로 C파이썬을 대체할 수 있다. 기존 파이썬 코드를 다시 써서 특정 속도 최적화 기능을 활용할 수 있다. 즉, 프로그래머 측에서 더 많은 작업이 필요하지만 런타임을 변경할 필요는 없다. 지금부터 파이썬 성능을 높이는 6가지 방법을 알아보자. 각 방법은 앞의 2가지 접근 방법 가운데 하나 또는 두 가지의 조합을 사용한다. 파이파이(PyPy) C파이썬의 대안 중에서는 파이파이가 단연 가장 눈에 띈다(예를 들어 쿠오라(Quora)는 프로덕션에서 파이파이를 사용함). 파이파이는 기존 파이썬 코드와의 호환성도 뛰어나므로 기본 런타임이 될 가능성도 가장 높다. 파이파이는 언어의 속도를 높이기 위해 구글 크롬의 V8 자바스크립트 엔진과 마찬가지로 JIT(Just-In-Time) 컴파일을 사용한다. 과거에는 파이썬 3보다 파이썬 2에 더 친화적이었지만 최신 버전의 파이파이는 파이썬 2.7 외에 파이썬 3.6과 3.7도 지원한다. 파이파이는 넘파이(NumPy)와 같이 파이썬 성능을 높이는 데 사용되는 일반적인 라이브러리와의 통합이 오랫동안 원활하지 않았다. 그러나 최근 릴리스에서는 이 문제가 많이 해결됐다. 파이파이의 또 다른 제약은 제대로 된 성능 향상을 얻기 위해서는 어느 정도 워밍업 시간이 필요하므로 서버와 같은 장기 실행 프로그램에는 적합하지만 단발성 스크립트에서는 효과가 떨어진다는 점이다. 또한 실행 파일의 크기가 C파이...

2021.03.05

“파이썬 속도 향상”··· 피스톤(Pyston), 개발 재개

드롭박스(Dropbox)가 ‘피스톤(Pyston)’ 개발 지원을 철회한 이후, 새롭게 구성된 개발팀이 파이썬 런타임을 최적화하는 JIT(just-in-time)의 최신 버전을 공개했다.  오랫동안 중단됐었던 ‘피스톤’ 개발 작업이 다시 시작됐다. 지난 28일(현지 시각) 드롭박스가 후원을 중단한 이후 처음으로 피스톤 개발팀이 피스톤 2.0을 출시한 것이다. 피스톤은 파이썬 프로그램의 실행 속도를 높이기 위해 JIT 컴파일(just-in-time compilation)을 사용하는 파이썬 런타임 변형이다.    기본적으로 피스톤은 표준 파이썬 런타임인 ‘C파이썬(CPython)’의 대체품을 제공한다. 또한 이는 파이썬 3.8과 호환되므로 해당 버전의 파이썬으로 실행되는 프로그램은 피스톤에서도 그대로 실행된다.  피스톤은 ‘JIT 컴파일’ 또는 ‘JITting’을 사용하여 코드를 생성해 속도를 크게 향상시킨다. 개발팀에 따르면 이는 표준 파이썬 프로그램에서 눈에 띄는 속도 개선을 보여줬다. 반면, ‘파이토치(Pytorch)’와 같이 더 빠른 실행을 위해 C/C++ 모듈을 사용하는 프로그램에서는 속도 향상이 적거나 거의 이뤄지지 않았다.  이 프로젝트의 목표 중 하나는 C파이썬의 원래 구현과 최대한 가깝게 유지하는 것이었다. 많은 서드파티 프로젝트가 C파이썬 동작(CPython behavior)에 대해 가정하기 때문이다. 이에 따라 ‘피스톤 2.0’은 기존 C파이썬 코드베이스에서 시작해, 피스톤 1.0에서 잘 작동했던 기능(예: 캐싱 속성 및 JITting)을 추가했다. 피스톤 JIT는 더 이상 LLVM(Low Level Virtual Machine)을 사용하지 않고, DynASM(Dynamic Assembler)을 사용하여 어셈블리를 직접 생성한다.  JITting은 파이썬 애플리케이션에 속도 향상을 지원하는 다른 프로젝트인 ‘PyPy’에서 사용하는 것과 동일한 기술이다. 이는 때에 따라 C파이썬이 제...

피스톤 파이썬 JIT 컴파일 PyPy 드롭박스 C파이썬 기트허브

2020.10.30

드롭박스(Dropbox)가 ‘피스톤(Pyston)’ 개발 지원을 철회한 이후, 새롭게 구성된 개발팀이 파이썬 런타임을 최적화하는 JIT(just-in-time)의 최신 버전을 공개했다.  오랫동안 중단됐었던 ‘피스톤’ 개발 작업이 다시 시작됐다. 지난 28일(현지 시각) 드롭박스가 후원을 중단한 이후 처음으로 피스톤 개발팀이 피스톤 2.0을 출시한 것이다. 피스톤은 파이썬 프로그램의 실행 속도를 높이기 위해 JIT 컴파일(just-in-time compilation)을 사용하는 파이썬 런타임 변형이다.    기본적으로 피스톤은 표준 파이썬 런타임인 ‘C파이썬(CPython)’의 대체품을 제공한다. 또한 이는 파이썬 3.8과 호환되므로 해당 버전의 파이썬으로 실행되는 프로그램은 피스톤에서도 그대로 실행된다.  피스톤은 ‘JIT 컴파일’ 또는 ‘JITting’을 사용하여 코드를 생성해 속도를 크게 향상시킨다. 개발팀에 따르면 이는 표준 파이썬 프로그램에서 눈에 띄는 속도 개선을 보여줬다. 반면, ‘파이토치(Pytorch)’와 같이 더 빠른 실행을 위해 C/C++ 모듈을 사용하는 프로그램에서는 속도 향상이 적거나 거의 이뤄지지 않았다.  이 프로젝트의 목표 중 하나는 C파이썬의 원래 구현과 최대한 가깝게 유지하는 것이었다. 많은 서드파티 프로젝트가 C파이썬 동작(CPython behavior)에 대해 가정하기 때문이다. 이에 따라 ‘피스톤 2.0’은 기존 C파이썬 코드베이스에서 시작해, 피스톤 1.0에서 잘 작동했던 기능(예: 캐싱 속성 및 JITting)을 추가했다. 피스톤 JIT는 더 이상 LLVM(Low Level Virtual Machine)을 사용하지 않고, DynASM(Dynamic Assembler)을 사용하여 어셈블리를 직접 생성한다.  JITting은 파이썬 애플리케이션에 속도 향상을 지원하는 다른 프로젝트인 ‘PyPy’에서 사용하는 것과 동일한 기술이다. 이는 때에 따라 C파이썬이 제...

2020.10.30

IDG 설문조사

회사명:한국IDG 제호: ITWorld 주소 : 서울시 중구 세종대로 23, 4층 우)04512
등록번호 : 서울 아00743 등록일자 : 2009년 01월 19일

발행인 : 박형미 편집인 : 박재곤 청소년보호책임자 : 한정규
사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2022 International Data Group. All rights reserved.

10.5.0.5