2013-04-05 2 views
0

Я предпочитаю динамический язык, как питон, как это имеет более простой синтаксис, чем сильно типизированных языков, таких как C++Насколько python ctypes отличается от C++ при работе с winapi?

Я буду писать код, который широко использует Win32 API и мой вопрос, является ли ctypes отличается от C++ при вызове WinAPI с точки зрения производительности и скорости выполнения.

+1

Ctypes ** делает ** отличается от C++, потому что 'ctypes' - это библиотека, а C++ - язык программирования. – 2013-04-05 18:33:54

+0

Я не знал, что вы можете использовать WinAPI с Python. :) – Rapptz

+0

Я знаю, что ctypes отличаются от C++, я имел в виду при использовании их для работы с winapi. Есть ли разница в производительности? – K7rim

ответ

2

Чистый код Python не так быстро, как C++. Если вы планируете широко использовать Win32 API, конвертирование из типов Python в типы C и обратно часто является дорогостоящим по сравнению с использованием C++ с Win32 API напрямую.

Вы также должны изучить pywin32, библиотеку, которая предоставляет большую часть Win32 API для Python. Как отмечает @eryksun в комментариях ниже, использование прямых ctypes означает необходимость писать обертки для функций C, определения структур и контекстных менеджеров для ресурсов, которые подвержены ошибкам. Pywin32 облегчает использование обычно используемых API Win32, но не содержит их всех.

+0

@eryksun, конечно же, но если OP по-прежнему хочет идти по этому маршруту, это проще, чем писать все обертки ctypes, и они уже были изменены, чтобы иметь более pythonic-интерфейс, например, обматывать необработанные дескрипторы Win32 в PyHandle, который закроет их, когда они выйдут из сферы действия. –

Смежные вопросы