2013-04-05 2 views
0

나는 파이썬 같은 동적 언어를 선호winapi를 다룰 때 파이썬 ctypes가 C++과 다른가요? 이 C++와 같은 강력하게 형식화 된 언어보다 더 쉽게 구문으로

나는 광범위하게는 Win32 API를 를 사용하는 코드를 작성되며, 제 질문은 측면에서 WINAPI를 호출 할 때하는 ctypes는 C++과 다를 여부

성능 및 실행 속도

+1

Ctypes **는 ** ctypes는 라이브러리이고 C++는 프로그래밍 언어이기 때문에 **는 ** C++과 다릅니다. –

+0

파이썬에서 WinAPI를 사용할 수 있는지 몰랐습니다. :) – Rapptz

+0

ctypes는 C++과 다르다는 것을 압니다. 나는 winapi를 다루기 위해 그것들을 사용할 때 의미가 있습니다. 성능에 어떤 차이가 있습니까? – K7rim

답변

2

순수 파이썬 코드는 C++만큼 빠르지 않습니다. Win32 API를 광범위하게 사용할 계획이라면 Python 타입을 C 타입으로 변환하고 다시 빈번하게 Win32 API로 C++를 사용하는 것과 비교하면 비용이 많이 듭니다.

또한 대부분의 Win32 API를 Python에 노출시키는 라이브러리 인 pywin32을 살펴 봐야합니다. @eryksun이 아래 주석에 언급했듯이 직선 ctypes를 사용한다는 것은 C 함수에 대한 래퍼, 구조에 대한 정의 및 자원에 대한 컨텍스트 관리자를 작성해야한다는 것을 의미합니다. 오류가 발생하기 쉽습니다. Pywin32는 일반적으로 사용되는 Win32 API를 완화하지만 모든 기능을 포함하지는 않습니다.

+0

@eryksun은 물론 그렇습니다.하지만 OP가 여전히 그 경로를 가고 싶다면 모든 ctypes 래퍼를 작성하는 것보다 쉽습니다. 그리고 원시 WIN32 핸들을 래핑하는 것과 같이 더 파이썬적인 인터페이스를 갖도록 이미 수정되었습니다. PyHandle 객체는 범위를 벗어날 때 객체를 닫습니다. –

관련 문제