2011-08-18 2 views
31

저는 파이썬 모듈 (+8000 라인)이 큽니다. 기본적으로 하드웨어 레지스터를 읽거나 쓰는 방법으로 직렬 포트를 통해 하드웨어 플랫폼과 상호 작용하는 수많은 함수가 있습니다.Cython을 C 변환기의 파이썬으로 사용하십시오.

숫자 알고리즘이 아닙니다. 따라서 응용 프로그램은 하드웨어 레지스터/메모리에 읽기/쓰기 만합니다. 이 라이브러리를 사용하여 사용자 지정 스크립트를 작성합니다. 결국, 이러한 모든 것들을 하드웨어의 임베디드 프로세서에서 실행되도록 제어해야합니다. 그런 다음 PC에서 이벤트를 시작하고 나머지는 하드웨어로 시작합니다.

그래서 C로 변환해야합니다. 스크립트를 자동 도구로 C로 변환하면 시간이 많이 걸릴 수 있습니다. 이것이 내가 Cython에 끌리는 이유입니다. 효율성은 중요하지 않습니다. 내 코드는 숫자 크 런처가 아닙니다. 그러나 생성 된 코드는 제한된 메모리 (몇 백 킬로바이트)에 맞도록 비교적 작아야합니다.

Cython을 사용자 정의 Python 스크립트의 변환기로 사용할 수 있습니까? 내 생각 엔 그렇습니다.이 경우 .c 파일을 내 하드웨어에서 실행할 수 있습니까? 내 추측은 내 하드웨어에서 Cython을 실행해야하므로 실행되지 않습니다. 그러나 몇 가지 .c 파일을 만드는 경우 코드를 Python의 많은 기능을 사용하지 않고 독립 실행 형으로 만들 수 있습니다.

+0

실제로이 작업을 성공적으로 수행 한 사람이 있습니까? 이것이 디버깅하기가 매우 어려울 것이라고 생각합니다. Cython/PyPy로이 작업을 직접하고 싶습니다.하지만이 작업은 매우 재미있을 것 같습니다. – radix07

답변

40
  1. 예, 핵심은 Cython의 핵심입니다. 하지만 ...
  2. Cython이 필요하지 않지만 libpython이 필요합니다. 많은 파이썬 기능을 사용하지 않는 것처럼 느껴질 수도 있지만, 이것을 시도해 보면 사실이 아님을 알게 될 것입니다 - 여전히 파이썬을 사용하면서 libpython에 대한 의존성으로부터 프로그램을 분리 할 수 ​​없습니다 언어.

또 다른 옵션은 구체적으로는 translation toolchain, 하지 PyPy 파이썬 인터프리터의, PyPy입니다. 파이썬 언어의 서브 세트 인 RPython을 C로 번역 할 수 있습니다. 실제로 많은 파이썬 언어 기능이나 라이브러리를 사용하지 않는 경우이 방법이 효과적 일 수 있습니다.

PyPy는 대체 파이썬 구현으로 널리 알려져 있지만 동적 언어를 다양한 형태로 컴파일하기위한 도구 세트이기도합니다. 이것은 (Python으로 작성된) Python Python 구현을 기계 코드로 컴파일하는 것을 가능하게합니다.

C++을 사용할 수있는 경우 Nuitka은 RPython (shedskin 및 PyPy의 용도)이 아닌 일반 Python에서 작동하는 Python에서 C++ 컴파일러입니다.

+0

그래서 .c를 제공하는 변환기입니다. 필자는 파이썬을 빠르게 구현하기위한 구체적인 구현 방법이라고 생각했습니다. 빨리 생각하면 내 관심사가 아닙니다. –

+0

답변을 더 자세히 읽어보십시오. PyPy는 __two things__, Python 구현 및 Python 번역기/컴파일러입니다. 너는 첫번째를 원하지 않는다, 너는 두번째를 원한다. 내가 연결 한 번역 툴체인은 당신이 원하는 것에 대한 세부 사항을 가지고 있습니다. – agf

+1

내 게시물을 업데이트하여 질문에 직접 답변을 추가했습니다. – agf

2

해당 임베디드 플랫폼에서 C++을 사용할 수있는 경우 shed skin이며 python을 C++로 변환합니다.

+2

ShedSkin에 대해 들었지만 믿을 수 없습니다 .Cython은 더 강력하고 널리 사용되는 것으로 보입니다. . –

+0

C++의 경우 Pythran도 있습니다. – boardrider

관련 문제