Offcanvas

C���������

‘편리한’ 파이썬과 ‘빠른’ 러스트를 결합하는 법

두 언어의 라이브러리 덕분에 파이썬(Python)의 ‘편리함’과 러스트(Rust)의 ‘속도’를 결합할 수 있다. PyO3 프로젝트와 C파이썬(cpython) 크레이트를 시작해보자.  언뜻 보기에 파이썬과 러스트는 언어 스펙트럼의 양끝을 차지한다. 런타임으로 설명되는 파이썬은 개발자에게 유연하고 편리한 프로그래밍 환경을 제공하지만 실행 성능을 대가로 치러야 한다. 러스트는 속도와 메모리 안정성을 제공하지만 메모리 작업을 처리하는 새 패러다임을 배워야 한다.  이론적으로 이 언어들은 경쟁해서는 안 된다. 협력해야 한다. 그리고 실제로 가능한 일이다. 러스트는 파이썬의 사용 편의성이란 이점을, 파이썬은 러스트의 속도와 안정성이라는 이점을 얻을 수 있다.  단, 파이썬과 함께 러스트를 반대로 러스트와 함께 파이썬을 사용하여 최적의 결과를 얻으려면 최소한 두 언어를 어느 정도 알아야 한다. 또 각 접근법의 옵션이 크게 다르기 때문에 둘 중 어느 것이 기본 언어인지 결정해야 한다.    PyO3로 파이썬에서 러스트 호출하기 만약 파이썬이 기본 언어라면 러스트와의 통합은 개념적으로 파이썬을 C와 통합하는 것과 동일한 방식으로 이뤄진다. C로 작성된 파이썬의 기본 구현은 C로 작성된 확장 또는 C-호환 ABI를 사용하는 확장을 쓴다. 동일한 API를 활용하는 러스트로 작성된 확장도 작동하지만 자동은 아니다. 파이썬 C API에 러스트 함수 바인딩을 제공하도록 설계된 크레이트를 사용해야 한다.  파이썬에서 러스트 바인딩 만들기 파이썬에서 러스트 바인딩을 생성하기 위해 가장 널리 알려진 프로젝트는 PyO3다. 러스트에서 파이썬 모듈을 작성하거나 파이썬 런타임을 러스트 바이너리에 포함하는 데 사용할 수 있다.  PyO3는 또 다른 프로젝트 ‘마트린(Maturin)’을 활용한다. 이는 파이썬 패키징 및 바인딩으로 러스트 크레이트를 작성하는 도구다. 파이썬 가상 환경에 설치하면 마트린을 명령줄에서 사용하여 파...

파이썬 러스트 사이썬 C파이썬 프로그래밍 언어 개발 언어

2022.07.07

두 언어의 라이브러리 덕분에 파이썬(Python)의 ‘편리함’과 러스트(Rust)의 ‘속도’를 결합할 수 있다. PyO3 프로젝트와 C파이썬(cpython) 크레이트를 시작해보자.  언뜻 보기에 파이썬과 러스트는 언어 스펙트럼의 양끝을 차지한다. 런타임으로 설명되는 파이썬은 개발자에게 유연하고 편리한 프로그래밍 환경을 제공하지만 실행 성능을 대가로 치러야 한다. 러스트는 속도와 메모리 안정성을 제공하지만 메모리 작업을 처리하는 새 패러다임을 배워야 한다.  이론적으로 이 언어들은 경쟁해서는 안 된다. 협력해야 한다. 그리고 실제로 가능한 일이다. 러스트는 파이썬의 사용 편의성이란 이점을, 파이썬은 러스트의 속도와 안정성이라는 이점을 얻을 수 있다.  단, 파이썬과 함께 러스트를 반대로 러스트와 함께 파이썬을 사용하여 최적의 결과를 얻으려면 최소한 두 언어를 어느 정도 알아야 한다. 또 각 접근법의 옵션이 크게 다르기 때문에 둘 중 어느 것이 기본 언어인지 결정해야 한다.    PyO3로 파이썬에서 러스트 호출하기 만약 파이썬이 기본 언어라면 러스트와의 통합은 개념적으로 파이썬을 C와 통합하는 것과 동일한 방식으로 이뤄진다. C로 작성된 파이썬의 기본 구현은 C로 작성된 확장 또는 C-호환 ABI를 사용하는 확장을 쓴다. 동일한 API를 활용하는 러스트로 작성된 확장도 작동하지만 자동은 아니다. 파이썬 C API에 러스트 함수 바인딩을 제공하도록 설계된 크레이트를 사용해야 한다.  파이썬에서 러스트 바인딩 만들기 파이썬에서 러스트 바인딩을 생성하기 위해 가장 널리 알려진 프로젝트는 PyO3다. 러스트에서 파이썬 모듈을 작성하거나 파이썬 런타임을 러스트 바이너리에 포함하는 데 사용할 수 있다.  PyO3는 또 다른 프로젝트 ‘마트린(Maturin)’을 활용한다. 이는 파이썬 패키징 및 바인딩으로 러스트 크레이트를 작성하는 도구다. 파이썬 가상 환경에 설치하면 마트린을 명령줄에서 사용하여 파...

2022.07.07

파이썬이 마침내 ‘GIL’을 제거할 수 있을까?··· 새 제안 공개 

C파이썬 런타임을 변경해 멀티스레드 성능을 강화하는 새로운 프로젝트가 제안됐다. 파이썬 개발팀도 해당 개념 증명에 관심을 보였다.  파이썬의 고질적인 약점(멀티스레드 환경에서 잘 확장되지 않는다는 것)이 해당 프로그래밍 언어 개발팀의 새로운 목표가 될지도 모른다. 지난 10월 7일(현지 시각) 개발자 샘 그로스가 파이썬의 참조 구현 C파이썬의 핵심 구성요소 ‘GIL(Global Interpreter Lock)’에 관한 변경사항을 제안했다.    만약 파이썬 개발팀에서 그의 제안을 받아들인다면 이는 파이썬이 런타임에서 멀티스레드로부터 객체 액세스를 직렬화하는 방식을 변경하고, 멀티스레드 성능을 크게 향상시킬 것으로 예상된다.  GIL은 오랫동안 C파이썬(그리고 파이썬)에서 더 나은 멀티스레드 성능의 장애물로 간주돼 왔다. 수년 동안 이를 제거하려는 많은 시도가 있었다. 하지만 대다수의 기존 파이썬 애플리케이션을 느리게 만들어 단일 스레드 성능을 저하시키는 문제를 해결할 수 없었다. 스레드 및 멀티프로세싱을 다루는 파이썬의 현 메타포는 높은 병렬처리가 불가능한 건 아니다. 하지만 개발자가 작업을 완료하기 위해서는 다스크(Dask) 등의 서드파티 모듈을 사용해야 했다. 새로운 제안은 파이썬 객체의 참조 카운팅 방식을 변경하여 객체를 소유한 스레드의 참조가 다른 스레드의 참조와 다르게 처리되도록 한다.  그로스에 따르면 단일 스레드 성능 벤치마크에서 GIL를 제거한 새로운 인터프리터는 C파이썬 3.9 인터프리터보다 약 10% 빠른 것으로 나타났다.  또한 일부 벤치마크에서 멀티스레드 성능은 새로운 스레드에 따라 거의 선형적으로 확장됐다. 예를 들면 20개의 스레드를 사용할 때 한 벤치마크에서는 최대 18.1배, 다른 벤치마크에서는 최대 19.8배 빨라졌다고 그는 언급했다. 이어서 이는 파이썬의 내부(예: C파이썬)에서 작동하는 기존 파이썬 라이브러리를 상당 수 다시 작성해야 할 만큼 큰 변경사항이라...

파이썬 프로그래밍 언어 개발 언어 C파이썬 GIL 멀티스레드

2021.10.15

C파이썬 런타임을 변경해 멀티스레드 성능을 강화하는 새로운 프로젝트가 제안됐다. 파이썬 개발팀도 해당 개념 증명에 관심을 보였다.  파이썬의 고질적인 약점(멀티스레드 환경에서 잘 확장되지 않는다는 것)이 해당 프로그래밍 언어 개발팀의 새로운 목표가 될지도 모른다. 지난 10월 7일(현지 시각) 개발자 샘 그로스가 파이썬의 참조 구현 C파이썬의 핵심 구성요소 ‘GIL(Global Interpreter Lock)’에 관한 변경사항을 제안했다.    만약 파이썬 개발팀에서 그의 제안을 받아들인다면 이는 파이썬이 런타임에서 멀티스레드로부터 객체 액세스를 직렬화하는 방식을 변경하고, 멀티스레드 성능을 크게 향상시킬 것으로 예상된다.  GIL은 오랫동안 C파이썬(그리고 파이썬)에서 더 나은 멀티스레드 성능의 장애물로 간주돼 왔다. 수년 동안 이를 제거하려는 많은 시도가 있었다. 하지만 대다수의 기존 파이썬 애플리케이션을 느리게 만들어 단일 스레드 성능을 저하시키는 문제를 해결할 수 없었다. 스레드 및 멀티프로세싱을 다루는 파이썬의 현 메타포는 높은 병렬처리가 불가능한 건 아니다. 하지만 개발자가 작업을 완료하기 위해서는 다스크(Dask) 등의 서드파티 모듈을 사용해야 했다. 새로운 제안은 파이썬 객체의 참조 카운팅 방식을 변경하여 객체를 소유한 스레드의 참조가 다른 스레드의 참조와 다르게 처리되도록 한다.  그로스에 따르면 단일 스레드 성능 벤치마크에서 GIL를 제거한 새로운 인터프리터는 C파이썬 3.9 인터프리터보다 약 10% 빠른 것으로 나타났다.  또한 일부 벤치마크에서 멀티스레드 성능은 새로운 스레드에 따라 거의 선형적으로 확장됐다. 예를 들면 20개의 스레드를 사용할 때 한 벤치마크에서는 최대 18.1배, 다른 벤치마크에서는 최대 19.8배 빨라졌다고 그는 언급했다. 이어서 이는 파이썬의 내부(예: C파이썬)에서 작동하는 기존 파이썬 라이브러리를 상당 수 다시 작성해야 할 만큼 큰 변경사항이라...

2021.10.15

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

파이썬(Python) 창시자 귀도 반 로섬이 파이콘 2021(Pycon 2021)에서 진행된 파이썬 랭귀지 서밋(Python Language Summit)에서 파이썬 속도를 2배에서 5배까지 더 빠르게 만들기 위한 단기 및 장기 계획을 발표했다.    파이썬에는 이미 파이파이(PyPy)와 같은 대체 런타임부터 C/C++로 작성된 랩핑 모듈까지 더 빠르게 실행할 수 있는 여러 방법이 있다. 하지만 C로 작성된 파이썬 참조 구현체이자 가장 널리 사용되는 언어 버전인 C파이썬(CPython) 자체의 속도를 높이는 방법은 거의 없다는 게 반 로섬의 설명이다.  그에 따르면 단기적으로는 현재 알파 단계 프로젝트로 개발 중인 파이썬 버전 3.11에서 최소한 1가지 이상의 주요 성능 개선 기능을 추가할 예정이다. 파이썬 3.11은 오는 2022년 출시될 계획이다.  또한 반 로섬은 파이썬 속도를 높이려는 현재 계획이 몇 가지 제약 조건 하에서 진행되고 있다고 설명했다. 이를테면 C파이썬의 어떤 변경사항도 런타임의 ABI(Application Binary Interface)를 손상시켜서는 안 된다. 그래야 C로 작성된 파이썬 확장 프로그램이 있는 그대로 계속 작동한다. 유지보수 용이성 및 간단하고 이해하기 쉬운 코드베이스를 유지하려는 C파이썬의 목표에 따라 변경사항은 점진적으로 이뤄져야 하고 관리할 수 있어야 한다. 그리고 모든 수정은 오픈소스여야 한다고 그는 전했다.  이러한 제약 조건 속에서 반 로섬과 그의 동료들은 자유롭게 변경할 수 있는 몇 가지 부분도 식별했다고 밝혔다. 예를 들면 파이썬의 바이트코드 시스템, 컴파일러, 인터프리터 등은 버전 간에 변경될 수 있기 때문에 모두 변경 대상으로 지정됐다. 특히 바이트코드는 주요 버전 간의 호환성을 보장하지 않으므로 필요한 경우 크게 변경할 수 있다고 반 로섬은 덧붙였다.  파이썬 3.11을 타깃으로 하는 첫 번째 제안에는 PEP 659에 설명된 ‘적응형 특정...

귀도 반 로섬 파이썬 프로그래밍 언어 개발 언어 C파이썬 파이파이 오픈소스

2021.05.14

파이썬(Python) 창시자 귀도 반 로섬이 파이콘 2021(Pycon 2021)에서 진행된 파이썬 랭귀지 서밋(Python Language Summit)에서 파이썬 속도를 2배에서 5배까지 더 빠르게 만들기 위한 단기 및 장기 계획을 발표했다.    파이썬에는 이미 파이파이(PyPy)와 같은 대체 런타임부터 C/C++로 작성된 랩핑 모듈까지 더 빠르게 실행할 수 있는 여러 방법이 있다. 하지만 C로 작성된 파이썬 참조 구현체이자 가장 널리 사용되는 언어 버전인 C파이썬(CPython) 자체의 속도를 높이는 방법은 거의 없다는 게 반 로섬의 설명이다.  그에 따르면 단기적으로는 현재 알파 단계 프로젝트로 개발 중인 파이썬 버전 3.11에서 최소한 1가지 이상의 주요 성능 개선 기능을 추가할 예정이다. 파이썬 3.11은 오는 2022년 출시될 계획이다.  또한 반 로섬은 파이썬 속도를 높이려는 현재 계획이 몇 가지 제약 조건 하에서 진행되고 있다고 설명했다. 이를테면 C파이썬의 어떤 변경사항도 런타임의 ABI(Application Binary Interface)를 손상시켜서는 안 된다. 그래야 C로 작성된 파이썬 확장 프로그램이 있는 그대로 계속 작동한다. 유지보수 용이성 및 간단하고 이해하기 쉬운 코드베이스를 유지하려는 C파이썬의 목표에 따라 변경사항은 점진적으로 이뤄져야 하고 관리할 수 있어야 한다. 그리고 모든 수정은 오픈소스여야 한다고 그는 전했다.  이러한 제약 조건 속에서 반 로섬과 그의 동료들은 자유롭게 변경할 수 있는 몇 가지 부분도 식별했다고 밝혔다. 예를 들면 파이썬의 바이트코드 시스템, 컴파일러, 인터프리터 등은 버전 간에 변경될 수 있기 때문에 모두 변경 대상으로 지정됐다. 특히 바이트코드는 주요 버전 간의 호환성을 보장하지 않으므로 필요한 경우 크게 변경할 수 있다고 반 로섬은 덧붙였다.  파이썬 3.11을 타깃으로 하는 첫 번째 제안에는 PEP 659에 설명된 ‘적응형 특정...

2021.05.14

피스톤 2.2 출시··· “기본 파이썬보다 30% 더 빠르게 실행”

피스톤(Pyston) 버전 2.2가 지난 5월 5일(현지 시각) 릴리즈됐다. 피스톤은 JIT 컴파일 등을 사용해 실행 속도를 높이는 파이썬 런타임 대체 구현이다.  이번 릴리즈에서 주목해야 할 새로운 특징이 있다. 바로 파이썬의 오리지널 라이선스 하에서 전체 소스 코드를 오픈소스 프로젝트로 사용할 수 있게 됐다는 점이다.    개발팀에 따르면 피스톤 프로젝트의 목표는 2가지다. 첫째, 추가 작업 없이 기존 파이썬 배포 속도를 높일 수 있는 표준 파이썬 런타임 대체 구현(drop-in replacement)을 제공하는 것. 둘째, 피스톤에서의 개선사항이 파이썬 자체로 업스트림 될 수 있도록 하는 것이다.  피스톤 2.2는 파이썬 3.8 버전을 기반으로 한다. 개발팀은 자체 웹 서버 벤치마크에서 피스톤 2.2가 기본 파이썬보다 약 30% 더 빠르게 실행됐다고 밝혔다. 경우에 따라 약 50% 더 빠르게 실행되기도 했다고 개발팀은 덧붙였다.  한편 피스톤은 LLVM JIT 프레임워크를 사용해 파이썬 애플리케이션 속도를 높이고자 하는 야심 찬 프로젝트로 드롭박스(Dropbox)에서 시작됐지만, 지난 2017년 드롭박스의 지원 철회로 개발이 중단됐었다.  --> “파이썬 속도 향상”··· 피스톤(Pyston), 개발 재개 기존 개발자 일부를 포함해 새롭게 구성된 피스톤 개발팀에서 제공하는 최신 버전의 피스톤은 다른 접근방식을 사용한다. 기본 C파이썬 코드로 시작하며, 이전 버전과의 호환성을 깨지 않고 성능을 향상시키는 데 도움을 주는 C파이썬을 변경한다.  이러한 맥락에서 피스톤은 파이썬 런타임을 대체하는 또 다른 구현체인 파이파이(PyPy)와 다르다. 파이파이는 JIT 컴파일을 사용해 상당한 수준의 성능 개선을 지원한다. 하지만 파이파이는 파이썬, 특히 C로 작성된 파이썬 확장 프로그램과 완전한 호환성을 유지하는 데 오랫동안 어려움을 겪고 있다. 피스톤은 C파이썬 코드베이스에서 ...

피스톤 파이썬 C파이썬 프로그래밍 언어 개발 언어 소프트웨어 개발 오픈소스 파이파이 JIT 컴파일

2021.05.07

피스톤(Pyston) 버전 2.2가 지난 5월 5일(현지 시각) 릴리즈됐다. 피스톤은 JIT 컴파일 등을 사용해 실행 속도를 높이는 파이썬 런타임 대체 구현이다.  이번 릴리즈에서 주목해야 할 새로운 특징이 있다. 바로 파이썬의 오리지널 라이선스 하에서 전체 소스 코드를 오픈소스 프로젝트로 사용할 수 있게 됐다는 점이다.    개발팀에 따르면 피스톤 프로젝트의 목표는 2가지다. 첫째, 추가 작업 없이 기존 파이썬 배포 속도를 높일 수 있는 표준 파이썬 런타임 대체 구현(drop-in replacement)을 제공하는 것. 둘째, 피스톤에서의 개선사항이 파이썬 자체로 업스트림 될 수 있도록 하는 것이다.  피스톤 2.2는 파이썬 3.8 버전을 기반으로 한다. 개발팀은 자체 웹 서버 벤치마크에서 피스톤 2.2가 기본 파이썬보다 약 30% 더 빠르게 실행됐다고 밝혔다. 경우에 따라 약 50% 더 빠르게 실행되기도 했다고 개발팀은 덧붙였다.  한편 피스톤은 LLVM JIT 프레임워크를 사용해 파이썬 애플리케이션 속도를 높이고자 하는 야심 찬 프로젝트로 드롭박스(Dropbox)에서 시작됐지만, 지난 2017년 드롭박스의 지원 철회로 개발이 중단됐었다.  --> “파이썬 속도 향상”··· 피스톤(Pyston), 개발 재개 기존 개발자 일부를 포함해 새롭게 구성된 피스톤 개발팀에서 제공하는 최신 버전의 피스톤은 다른 접근방식을 사용한다. 기본 C파이썬 코드로 시작하며, 이전 버전과의 호환성을 깨지 않고 성능을 향상시키는 데 도움을 주는 C파이썬을 변경한다.  이러한 맥락에서 피스톤은 파이썬 런타임을 대체하는 또 다른 구현체인 파이파이(PyPy)와 다르다. 파이파이는 JIT 컴파일을 사용해 상당한 수준의 성능 개선을 지원한다. 하지만 파이파이는 파이썬, 특히 C로 작성된 파이썬 확장 프로그램과 완전한 호환성을 유지하는 데 오랫동안 어려움을 겪고 있다. 피스톤은 C파이썬 코드베이스에서 ...

2021.05.07

인스타그램, C파이썬 3.8의 성능 중점 포크 ‘신더’ 공개

인스타그램 내부에서 사용 중이었던 C파이썬 3.8의 성능 중점 포크 ‘신더(Cinder)’가 깃허브에서 페이스북 인큐베이터(Facebook Incubator) 프로젝트로 제공된다. 신더 개발팀은 코드를 공개하는 목적은 더 빠른 통합 C파이썬이라고 밝혔다.    또한 이 작업의 일부를 파이썬의 참조 구현체인 C파이썬으로 업스트림하기 위한 논의를 활성화하는 한편, C파이썬 성능과 관련된 작업 중복을 줄이기 위해 신더를 공개했다고 회사 측은 전했다.  신더는 바이트코드 인라인 캐싱, 적극적인 코루틴 평가, 메소드 단위 JIT 컴파일러, 타입 어노테이션으로 타입에 최적화된 바이트코드를 생성하여 JIT 성능을 개선하는 실험적인 바이트코드 컴파일러 등을 포함한 여러 성능 최적화 기능을 제공한다.  단, 신더는 다른 사용자를 지원하기 위해 다듬어지거나 문서화되진 않았다. 또한 인스타그램은 독립적인 오픈소스 프로젝트로 지원할 여력이 없으며, C파이썬의 대안이 되고자 하는 마음도 없다고 말했다. 개발팀은 신더가 자사 프로덕션 워크로드에서 사용할 정도로 충분히 안정적이고 빠르긴 하지만 다른 워크로드에서의 안정성, 정확성, 성능에 관해서는 아무런 보장도 하지 않는다고 덧붙였다.  신더의 인라인 캐싱은 일반 파이썬 옵코드 실행에서 최적화할 수 있는 경우를 파악하고 해당 옵코드를 최적화 버전으로 동적 대체한다. 또 적극적인 코루틴 평가를 위해 신더는 비동기 함수 호출이 즉시 대기하면 호출된 함수를 첫 번째 대기까지 실행한다. 호출된 함수가 기다릴 필요 없이 반환에 도달하면 신더는 코루틴 객체를 생성하거나 이벤트 루프로 지연시키지 않고 해당 값을 직접 반환할 수 있다. 이렇게 하면 비동기 작업이 많은 워크로드에서 CPU 최적화를 수행할 수 있다.  신더는 리눅스 x64(Linux x64)에서 빌드 및 테스트됐다. 맥OS 등의 다른 플랫폼에서는 아마도 작동하지 않을 것이라고 개발팀은 언급했다. ciokr@idg.co.kr ...

인스타그램 오픈소스 파이썬 C파이썬 포크 신더 깃허브 페이스북

2021.05.07

인스타그램 내부에서 사용 중이었던 C파이썬 3.8의 성능 중점 포크 ‘신더(Cinder)’가 깃허브에서 페이스북 인큐베이터(Facebook Incubator) 프로젝트로 제공된다. 신더 개발팀은 코드를 공개하는 목적은 더 빠른 통합 C파이썬이라고 밝혔다.    또한 이 작업의 일부를 파이썬의 참조 구현체인 C파이썬으로 업스트림하기 위한 논의를 활성화하는 한편, C파이썬 성능과 관련된 작업 중복을 줄이기 위해 신더를 공개했다고 회사 측은 전했다.  신더는 바이트코드 인라인 캐싱, 적극적인 코루틴 평가, 메소드 단위 JIT 컴파일러, 타입 어노테이션으로 타입에 최적화된 바이트코드를 생성하여 JIT 성능을 개선하는 실험적인 바이트코드 컴파일러 등을 포함한 여러 성능 최적화 기능을 제공한다.  단, 신더는 다른 사용자를 지원하기 위해 다듬어지거나 문서화되진 않았다. 또한 인스타그램은 독립적인 오픈소스 프로젝트로 지원할 여력이 없으며, C파이썬의 대안이 되고자 하는 마음도 없다고 말했다. 개발팀은 신더가 자사 프로덕션 워크로드에서 사용할 정도로 충분히 안정적이고 빠르긴 하지만 다른 워크로드에서의 안정성, 정확성, 성능에 관해서는 아무런 보장도 하지 않는다고 덧붙였다.  신더의 인라인 캐싱은 일반 파이썬 옵코드 실행에서 최적화할 수 있는 경우를 파악하고 해당 옵코드를 최적화 버전으로 동적 대체한다. 또 적극적인 코루틴 평가를 위해 신더는 비동기 함수 호출이 즉시 대기하면 호출된 함수를 첫 번째 대기까지 실행한다. 호출된 함수가 기다릴 필요 없이 반환에 도달하면 신더는 코루틴 객체를 생성하거나 이벤트 루프로 지연시키지 않고 해당 값을 직접 반환할 수 있다. 이렇게 하면 비동기 작업이 많은 워크로드에서 CPU 최적화를 수행할 수 있다.  신더는 리눅스 x64(Linux x64)에서 빌드 및 테스트됐다. 맥OS 등의 다른 플랫폼에서는 아마도 작동하지 않을 것이라고 개발팀은 언급했다. ciokr@idg.co.kr ...

2021.05.07

구글 클라우드, 파이썬 프로젝트에 35만 달러 후원

구글 클라우드(Google Cloud)가 C파이썬(CPython) 개발 지원, 기본 파이썬 도구 개선, 파이썬 패키지 에코시스템 보안 강화를 목표로 파이썬 소프트웨어 재단(Python Software Foundation, PSF)에 미화 35만 달러를 기부했다.    지난 2월 12일 구글 클라우드는 이번 후원을 통해 다음의 세 가지 프로젝트를 지원할 계획이라고 밝혔다.  • PyPI(Python Package Index) 저장소를 위한 프로덕션화된 멀웨어 탐지(구글 클라우드는 이 인덱스를 사용하여 텐서플로우(TensorFlow) 오픈소스 머신러닝 라이브러리를 포함한 수많은 클라이언트 라이브러리 및 개발자 도구를 배포한다).  • 파이썬 기본 서비스 및 도구 개선  • C파이썬 프로젝트의 유지 관리 우선순위를 지정하고 백로그를 해결하기 위해 풀타임으로 일할 C파이썬 전속 개발자(C파이썬은 파이썬 프로그래밍 언어의 참조 구현체다).  또한 회사에 따르면 구글 클라우드 퍼블릭 데이터세트(Google Cloud Public Datasets) 프로그램은 이제 거의 실시간으로 업데이트되는 PyPI 다운로드 통계 및 프로젝트 메타데이터의 새로운 퍼블릭 데이터세트를 제공한다. 구글 클라우드 계정 소유자는 빅쿼리(BigQuery) 데이터 웨어하우스 또는 빅쿼리 샌드박스(BigQuery Sandbox)를 사용하여 이러한 데이터세트를 쿼리할 수 있다.  구글 클라우드는 공식 블로그에서 “파이썬은 구글 클라우드와 고객 모두에게 매우 중요하다”라면서, “10년 전에 출시된 구글 앱 엔진(Google App Engine)과 같은 서비스형 플랫폼부터 구글 클라우드 펑션(Google Cloud Functions)을 포함한 최신 서버리스 제품에 이르기까지 많은 호스팅 서비스에서 인기 있는 런타임으로 사용되고 있기 때문이다”라고 말했다. ciokr@idg.co.kr  

구글 구글 클라우드 파이썬 C파이썬 PyPI 멀웨어 텐서플로우 빅쿼리 빅쿼리 샌드박스

2021.02.17

구글 클라우드(Google Cloud)가 C파이썬(CPython) 개발 지원, 기본 파이썬 도구 개선, 파이썬 패키지 에코시스템 보안 강화를 목표로 파이썬 소프트웨어 재단(Python Software Foundation, PSF)에 미화 35만 달러를 기부했다.    지난 2월 12일 구글 클라우드는 이번 후원을 통해 다음의 세 가지 프로젝트를 지원할 계획이라고 밝혔다.  • PyPI(Python Package Index) 저장소를 위한 프로덕션화된 멀웨어 탐지(구글 클라우드는 이 인덱스를 사용하여 텐서플로우(TensorFlow) 오픈소스 머신러닝 라이브러리를 포함한 수많은 클라이언트 라이브러리 및 개발자 도구를 배포한다).  • 파이썬 기본 서비스 및 도구 개선  • C파이썬 프로젝트의 유지 관리 우선순위를 지정하고 백로그를 해결하기 위해 풀타임으로 일할 C파이썬 전속 개발자(C파이썬은 파이썬 프로그래밍 언어의 참조 구현체다).  또한 회사에 따르면 구글 클라우드 퍼블릭 데이터세트(Google Cloud Public Datasets) 프로그램은 이제 거의 실시간으로 업데이트되는 PyPI 다운로드 통계 및 프로젝트 메타데이터의 새로운 퍼블릭 데이터세트를 제공한다. 구글 클라우드 계정 소유자는 빅쿼리(BigQuery) 데이터 웨어하우스 또는 빅쿼리 샌드박스(BigQuery Sandbox)를 사용하여 이러한 데이터세트를 쿼리할 수 있다.  구글 클라우드는 공식 블로그에서 “파이썬은 구글 클라우드와 고객 모두에게 매우 중요하다”라면서, “10년 전에 출시된 구글 앱 엔진(Google App Engine)과 같은 서비스형 플랫폼부터 구글 클라우드 펑션(Google Cloud Functions)을 포함한 최신 서버리스 제품에 이르기까지 많은 호스팅 서비스에서 인기 있는 런타임으로 사용되고 있기 때문이다”라고 말했다. ciokr@idg.co.kr  

2021.02.17

“파이썬 속도 향상”··· 피스톤(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

모든 프로그래밍 요구를 충족하는 12가지 파이썬

소프트웨어 개발을 위해 파이썬을 선택한다는 것은 모든 프로그래밍 요구fmf 포괄하는 풍부한 패키지를 보유한 방대한 언어 생태계를 선택하는 것과 같다. 그러나 GUI 개발부터 머신 러닝에 이르기까지 온갖 분야를 위한 라이브러리 외에 선택할 수 있는 파이썬 런타임도 다양하다. 잘 살펴보면 이 중에서 당면한 사용 사례에 다른 런타임보다 더 적합한 런타임을 찾을 수 있을 것이다.   이 글에서는 표준 구현(C파이썬)부터 속도에 최적화된 버전(파이파이), 특수한 사용 사례를 위한 버전(아나콘다, 액티브파이썬), 다양한 언어 런타임을 위한 버전(자이썬, 아이언파이썬), 그리고 첨단 실험적 버전(파이카피, 메사파이)에 이르기까지 다양한 파이썬 배포판을 간략히 살펴본다.   C파이썬(CPython) C파이썬은 파이썬의 참조 구현, 즉 다른 모든 파이썬 변형이 기준으로 삼는 표준 버전이다. C파이썬은 이름에서 짐작할 수 있듯이 C로 작성되며 파이썬 언어에 관한 최상위 의사 결정을 내리는 핵심 그룹에 의해 개발된다. C파이썬 사용 사례 C파이썬은 파이썬의 참조 구현이므로 최적화 측면에서 가장 보수적이다. 설계 의도 자체가 그렇다. 파이썬의 핵심 관리 그룹이 정한 C파이썬의 목표는 가장 폭넓게 호환되고 표준화된 파이썬 구현이다. 파이썬 표준에 대한 호환성 및 부합성이 강력한 성능 및 기타 사항보다 중요하다면 C파이썬이 최선의 선택이다. C파이썬은 가장 기본이 되는 구현에서 파이썬을 다루고자 하는 전문가와 몇 가지 편의 기능을 포기할 의향이 있는 전문가에게도 유용하다. 예를 들어 C파이썬에서는 가상 환경을 설정하기 위한 작업이 조금 더 번거롭다. 다른 배포판(특히 아나콘다)은 작업 영역 설정과 관련하여 많은 부분을 자동화해서 제공한다. C파이썬의 제약 C파이썬에서는 다른 파이썬 에디션과 같은 성능 최적화를 찾아볼 수 없다. 네이티브 JIT(Just-In-Time) 컴파일러도, 가속 수학 라이브러리도, 성능을 위한 써드파티 추가 기능도 없다. 모두 직접 추가...

파이썬 C파이썬

2019.09.30

소프트웨어 개발을 위해 파이썬을 선택한다는 것은 모든 프로그래밍 요구fmf 포괄하는 풍부한 패키지를 보유한 방대한 언어 생태계를 선택하는 것과 같다. 그러나 GUI 개발부터 머신 러닝에 이르기까지 온갖 분야를 위한 라이브러리 외에 선택할 수 있는 파이썬 런타임도 다양하다. 잘 살펴보면 이 중에서 당면한 사용 사례에 다른 런타임보다 더 적합한 런타임을 찾을 수 있을 것이다.   이 글에서는 표준 구현(C파이썬)부터 속도에 최적화된 버전(파이파이), 특수한 사용 사례를 위한 버전(아나콘다, 액티브파이썬), 다양한 언어 런타임을 위한 버전(자이썬, 아이언파이썬), 그리고 첨단 실험적 버전(파이카피, 메사파이)에 이르기까지 다양한 파이썬 배포판을 간략히 살펴본다.   C파이썬(CPython) C파이썬은 파이썬의 참조 구현, 즉 다른 모든 파이썬 변형이 기준으로 삼는 표준 버전이다. C파이썬은 이름에서 짐작할 수 있듯이 C로 작성되며 파이썬 언어에 관한 최상위 의사 결정을 내리는 핵심 그룹에 의해 개발된다. C파이썬 사용 사례 C파이썬은 파이썬의 참조 구현이므로 최적화 측면에서 가장 보수적이다. 설계 의도 자체가 그렇다. 파이썬의 핵심 관리 그룹이 정한 C파이썬의 목표는 가장 폭넓게 호환되고 표준화된 파이썬 구현이다. 파이썬 표준에 대한 호환성 및 부합성이 강력한 성능 및 기타 사항보다 중요하다면 C파이썬이 최선의 선택이다. C파이썬은 가장 기본이 되는 구현에서 파이썬을 다루고자 하는 전문가와 몇 가지 편의 기능을 포기할 의향이 있는 전문가에게도 유용하다. 예를 들어 C파이썬에서는 가상 환경을 설정하기 위한 작업이 조금 더 번거롭다. 다른 배포판(특히 아나콘다)은 작업 영역 설정과 관련하여 많은 부분을 자동화해서 제공한다. C파이썬의 제약 C파이썬에서는 다른 파이썬 에디션과 같은 성능 최적화를 찾아볼 수 없다. 네이티브 JIT(Just-In-Time) 컴파일러도, 가속 수학 라이브러리도, 성능을 위한 써드파티 추가 기능도 없다. 모두 직접 추가...

2019.09.30

머신러닝 맞춤 정복···파이썬 배포판 5종 따라잡기

통계, 데이터 과학, 머신러닝 등의 분야에 종사하고 있다면 파이썬(Python)을 사용하고 있을 확률이 높다. 그럴만한 이유가 있다. 풍부한 라이브러리와 관련 두고 생태계 그리고 언어 자체의 편리함을 갖춘 파이썬은 훌륭한 선택이다. 하지만 파이썬에는 여러 배포판이 존재하며 각각 다른 대상자를 위해 개발됐다. 오늘은 포괄적인 것부터 구체적인 것까지 5가지 파이썬 버전과 이들 각각이 머신러닝 작업 처리를 위해 어떻게 구축되는지에 대한 세부사항을 살펴본다. 파이썬은 시스템 자동화부터 머신러닝 등의 첨단 분야에서의 작업까지 여러 작업을 간소화한다. 아나콘다 파이썬(Anaconda Python) 아나콘다는 데이터 과학과 머신러닝 뿐 아니라 일반 용도의 개발을 위한 배포판으로써 두각을 나타내고 있다. 아나콘다는 기업을 위한 지원 계획을 제공하는 같은 이름의 상용 제공처(종전 이름은 컨티넘 어낼리틱스(Continuum Analytics))의 지원을 받는다. 아나콘다 배포판은 데이터 과학에서 자주 사용하는 NumPy, 판다스(Pandas), Matplotlib 등의 패키지에 손쉽게 액세스할 수 있게 해준다. 아나콘다와 쉽게 묶이는 것은 아니지만 콘다(Conda)라는 사용자 정의 패키지 관리 시스템을 통해 사용 가능하다. 콘다 설치 패키지는 파이썬의 자체 Pip를 통해 관리할 수 없는 까다로운 외부 바이너리 의존성이 포함될 수 있다. (원한다면 Pip를 사용할 수 있지만 콘다가 이런 패키지에 제공하는 이점은 누릴 수 없을 것이다.) 각 패키지는 아나콘다에 의해 최신 상태로 유지되며 그 중 상당수는 속도를 위해 인텔MKL(Math Kernel Library) 확장기능으로 컴파일 된다. 아나콘다가 제공하는 다른 주요 이점으로는 그래픽 환경인 아나콘다 내비게이터(Anaconda Navigator)가 있다. 내비게이터는 IDE가 아니지만 콘다 패키지 관리자와 사용자 구성 가상 환경을 포함해 아나콘다 기능을 위한 편리한 G...

배포판 C파이썬 아나콘다 액티브파이썬 원파이썬

2018.06.15

통계, 데이터 과학, 머신러닝 등의 분야에 종사하고 있다면 파이썬(Python)을 사용하고 있을 확률이 높다. 그럴만한 이유가 있다. 풍부한 라이브러리와 관련 두고 생태계 그리고 언어 자체의 편리함을 갖춘 파이썬은 훌륭한 선택이다. 하지만 파이썬에는 여러 배포판이 존재하며 각각 다른 대상자를 위해 개발됐다. 오늘은 포괄적인 것부터 구체적인 것까지 5가지 파이썬 버전과 이들 각각이 머신러닝 작업 처리를 위해 어떻게 구축되는지에 대한 세부사항을 살펴본다. 파이썬은 시스템 자동화부터 머신러닝 등의 첨단 분야에서의 작업까지 여러 작업을 간소화한다. 아나콘다 파이썬(Anaconda Python) 아나콘다는 데이터 과학과 머신러닝 뿐 아니라 일반 용도의 개발을 위한 배포판으로써 두각을 나타내고 있다. 아나콘다는 기업을 위한 지원 계획을 제공하는 같은 이름의 상용 제공처(종전 이름은 컨티넘 어낼리틱스(Continuum Analytics))의 지원을 받는다. 아나콘다 배포판은 데이터 과학에서 자주 사용하는 NumPy, 판다스(Pandas), Matplotlib 등의 패키지에 손쉽게 액세스할 수 있게 해준다. 아나콘다와 쉽게 묶이는 것은 아니지만 콘다(Conda)라는 사용자 정의 패키지 관리 시스템을 통해 사용 가능하다. 콘다 설치 패키지는 파이썬의 자체 Pip를 통해 관리할 수 없는 까다로운 외부 바이너리 의존성이 포함될 수 있다. (원한다면 Pip를 사용할 수 있지만 콘다가 이런 패키지에 제공하는 이점은 누릴 수 없을 것이다.) 각 패키지는 아나콘다에 의해 최신 상태로 유지되며 그 중 상당수는 속도를 위해 인텔MKL(Math Kernel Library) 확장기능으로 컴파일 된다. 아나콘다가 제공하는 다른 주요 이점으로는 그래픽 환경인 아나콘다 내비게이터(Anaconda Navigator)가 있다. 내비게이터는 IDE가 아니지만 콘다 패키지 관리자와 사용자 구성 가상 환경을 포함해 아나콘다 기능을 위한 편리한 G...

2018.06.15

"실행시간 줄고 API 리팩토링"··· 파이썬은 지금 '환골탈태' 중

파이썬(Python)은 부지런하다. 파이썬 언어와 가장 널리 사용되는 구현체 'C파이썬(CPython)'은 새 버전이 나올 때마다 발전을 거듭해 사용하기도 편해지고 있다. 그러나 파이썬의 인기가 높아지고 활용 사례가 늘어나면서 느린 실행 속도에서부터 동시 실행 불가 등과 같은 한계점도 더 두드러지고 있다. 최근에 파이썬에 이루어진 개선은 자동화, 머신러닝, 마이크로서비스와 같은 다양한 분야에서 대두되는 요구사항을 충족하기 위한 것이었다. 파이썬의 코어 개발 팀이 대대적인 개선을 추진 중인 4가지를 살펴보자. 실행 시간 단축 파이썬이 계획 중인 개선은 대부분 '속도 증가'와 관련이 있다. 이 중 최우선 목표는 C파이썬 해석기 실행에 걸리는 시간을 줄이는 것이다. 개발 비용 대비 단기 효과가 가장 클 것으로 기대된다. 파이썬의 실행 시간이 문제라는 점은 의심의 여지가 없다. 코어 C파이썬 개발자 빅터 스티너는 파이썬 3.7(현재 트렁크(trunk) 버전)의 실행 속도가 파이썬 2.7 펄(Perl) 5보다 2.3~2.8배 느리며 PHP 7의 실행 속도는 파이썬 3에 비해 5~10배 빠르다고 설명했다. 파이썬 3의 실행이 굼뜨다 보니 파이썬 2.x 사용자는 업그레이드를 망설이고 있다. 그러나 파이썬 2가 2020년 지원 종료 예정임을 감안하면 업그레이드가 시급한 상황이다. 컨테이너의 언어 실행 시간과 같이 짧은 실행 시간이 필수적인 환경에서 굳이 파이썬, 특히 C파이썬을 써야 할 정당성을 찾기도 어렵다. 실행 시간이 짧으면 짧을수록, 즉, 컨테이너가 명령을 받아들일 준비가 빨리 될수록 언어의 유용성은 어떤 컨테이너 환경에서든 높아진다. 네임드 튜플 속도 향상 C파이썬의 코어 개발자가 실행 시간(시동 시간 포함)을 단축하기 위해 사용하는 가장 일반적인 방식 중 하나는 네임드 튜플(named tuple)을 구현하는 것이다. 파이썬에서 튜플은 요소 0, 요소 1 등 인덱스 위치에 의해 접근되는 정수나 문자열...

개발자 프로그래밍 파이썬 C파이썬

2017.09.08

파이썬(Python)은 부지런하다. 파이썬 언어와 가장 널리 사용되는 구현체 'C파이썬(CPython)'은 새 버전이 나올 때마다 발전을 거듭해 사용하기도 편해지고 있다. 그러나 파이썬의 인기가 높아지고 활용 사례가 늘어나면서 느린 실행 속도에서부터 동시 실행 불가 등과 같은 한계점도 더 두드러지고 있다. 최근에 파이썬에 이루어진 개선은 자동화, 머신러닝, 마이크로서비스와 같은 다양한 분야에서 대두되는 요구사항을 충족하기 위한 것이었다. 파이썬의 코어 개발 팀이 대대적인 개선을 추진 중인 4가지를 살펴보자. 실행 시간 단축 파이썬이 계획 중인 개선은 대부분 '속도 증가'와 관련이 있다. 이 중 최우선 목표는 C파이썬 해석기 실행에 걸리는 시간을 줄이는 것이다. 개발 비용 대비 단기 효과가 가장 클 것으로 기대된다. 파이썬의 실행 시간이 문제라는 점은 의심의 여지가 없다. 코어 C파이썬 개발자 빅터 스티너는 파이썬 3.7(현재 트렁크(trunk) 버전)의 실행 속도가 파이썬 2.7 펄(Perl) 5보다 2.3~2.8배 느리며 PHP 7의 실행 속도는 파이썬 3에 비해 5~10배 빠르다고 설명했다. 파이썬 3의 실행이 굼뜨다 보니 파이썬 2.x 사용자는 업그레이드를 망설이고 있다. 그러나 파이썬 2가 2020년 지원 종료 예정임을 감안하면 업그레이드가 시급한 상황이다. 컨테이너의 언어 실행 시간과 같이 짧은 실행 시간이 필수적인 환경에서 굳이 파이썬, 특히 C파이썬을 써야 할 정당성을 찾기도 어렵다. 실행 시간이 짧으면 짧을수록, 즉, 컨테이너가 명령을 받아들일 준비가 빨리 될수록 언어의 유용성은 어떤 컨테이너 환경에서든 높아진다. 네임드 튜플 속도 향상 C파이썬의 코어 개발자가 실행 시간(시동 시간 포함)을 단축하기 위해 사용하는 가장 일반적인 방식 중 하나는 네임드 튜플(named tuple)을 구현하는 것이다. 파이썬에서 튜플은 요소 0, 요소 1 등 인덱스 위치에 의해 접근되는 정수나 문자열...

2017.09.08

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