Offcanvas

Cython

파이썬 성능 개선을 위한 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

C 속도의 파이썬··· '사이썬'의 기본 개념 따라잡기

파이썬(Python)은 가장 편리하고 다재다능하고 유용한 프로그래밍 언어로 유명하다. 하지만 실행 속도 측면에서는 별로 내세울 만하지 않았다. 사이썬(Cython)은 다르다. 사이썬은 파이썬의 확대 집합으로, C로 컴파일되며 실행하는 작업에 따라 적게는 몇 퍼센트에서 많게는 몇 배 더 높은 성능을 제공한다. 파이썬의 네이티브 객체 형식에 구속되는 작업에서는 속도 향상 폭이 크지 않지만 수치 연산을 비롯해 파이썬 자체 내부 구조가 관여하지 않는 모든 연산에서 상당한 속도 향상을 얻을 수 있다. 이 방법으로 파이썬의 본질적인 제약을 완화하거나 아예 뛰어넘을 수 있다. 사이썬을 사용하면 파이썬의 용이함과 편리함을 포기하지 않고도 파이썬의 본질적인 제약 가운데 상당수를 우회하거나 완전히 뛰어넘을 수 있다. 이 기사에서는 사이썬의 기본 개념을 알아보고 사이썬을 사용해 함수 중 하나의 실행 속도를 가속화하는 간단한 파이썬 애플리케이션을 만들어 본다. 파이썬을 C로 컴파일 파이썬 코드는 C 모듈을 직접 호출할 수 있다. 이런 C 모듈은 일반 C 라이브러리일 수도 있고 파이썬 전용으로 제작된 라이브러리일 수도 있다. 사이썬은 또 다른 종류의 모듈, 즉 파이썬 내부 구조와 통신하며 기존 파이썬 코드와 하나로 묶을 수 있는 C 라이브러리를 생성한다. 사이썬 코드는 기본적으로 파이썬 코드와 상당부분 닮았다. 사이썬 컴파일러에 파이썬 프로그램을 집어넣으면 컴파일러는 프로그램을 현 상태 그대로 받아들이다. 사이썬의 네이티브 가속이 적용되지 않을 뿐이다. 그러나 파이썬 코드에 사이썬의 특수 구문으로 된 형식 주석을 넣으면 사이썬은 느린 파이썬 객체를 속도가 빠른 C로 대체할 수 있다. 사이썬의 접근 방법은 증분적이다. 즉, 개발자는 애플리케이션 전체를 처음부터 새로 작성할 필요 없이 기존 파이썬 애플리케이션으로 시작해서 부분부분 코드를 변경해 속도를 높일 수 있다. 이 방법은 일반적으로 소프트웨어 성능 문제의 속성과 잘 맞아떨어진다. 대부분의 프로그램...

파이썬 Cython Python 사이썬

2018.02.13

파이썬(Python)은 가장 편리하고 다재다능하고 유용한 프로그래밍 언어로 유명하다. 하지만 실행 속도 측면에서는 별로 내세울 만하지 않았다. 사이썬(Cython)은 다르다. 사이썬은 파이썬의 확대 집합으로, C로 컴파일되며 실행하는 작업에 따라 적게는 몇 퍼센트에서 많게는 몇 배 더 높은 성능을 제공한다. 파이썬의 네이티브 객체 형식에 구속되는 작업에서는 속도 향상 폭이 크지 않지만 수치 연산을 비롯해 파이썬 자체 내부 구조가 관여하지 않는 모든 연산에서 상당한 속도 향상을 얻을 수 있다. 이 방법으로 파이썬의 본질적인 제약을 완화하거나 아예 뛰어넘을 수 있다. 사이썬을 사용하면 파이썬의 용이함과 편리함을 포기하지 않고도 파이썬의 본질적인 제약 가운데 상당수를 우회하거나 완전히 뛰어넘을 수 있다. 이 기사에서는 사이썬의 기본 개념을 알아보고 사이썬을 사용해 함수 중 하나의 실행 속도를 가속화하는 간단한 파이썬 애플리케이션을 만들어 본다. 파이썬을 C로 컴파일 파이썬 코드는 C 모듈을 직접 호출할 수 있다. 이런 C 모듈은 일반 C 라이브러리일 수도 있고 파이썬 전용으로 제작된 라이브러리일 수도 있다. 사이썬은 또 다른 종류의 모듈, 즉 파이썬 내부 구조와 통신하며 기존 파이썬 코드와 하나로 묶을 수 있는 C 라이브러리를 생성한다. 사이썬 코드는 기본적으로 파이썬 코드와 상당부분 닮았다. 사이썬 컴파일러에 파이썬 프로그램을 집어넣으면 컴파일러는 프로그램을 현 상태 그대로 받아들이다. 사이썬의 네이티브 가속이 적용되지 않을 뿐이다. 그러나 파이썬 코드에 사이썬의 특수 구문으로 된 형식 주석을 넣으면 사이썬은 느린 파이썬 객체를 속도가 빠른 C로 대체할 수 있다. 사이썬의 접근 방법은 증분적이다. 즉, 개발자는 애플리케이션 전체를 처음부터 새로 작성할 필요 없이 기존 파이썬 애플리케이션으로 시작해서 부분부분 코드를 변경해 속도를 높일 수 있다. 이 방법은 일반적으로 소프트웨어 성능 문제의 속성과 잘 맞아떨어진다. 대부분의 프로그램...

2018.02.13

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.4.0.31