Найти - Пользователи
Полная версия: Импорт DLL в Python
Начало » Python для новичков » Импорт DLL в Python
1
gadmaker
Подскажите пожалуйста как наиболее быстро и эффективно импортировать DLL в Python.
Немного помучился и составил вот такую конструкцию:

from ctypes import *
a = CDLL(“MyDLL.dll”)
a.MyMin.restype = c_double
print( “MyDLL”, a.MyMin(c_double(10),c_double(2)) )

a.DoubleString.restype = c_char_p
print( “DoubleString”, a.DoubleString(c_char_p(“Hello!!!”)) )

Вот только смущает то, что a.MyMin(c_double(10),c_double(2)) постоянно называется c_double() или a.DoubleString(c_char_p(“Hello!!!”)) c_char_p() не приведёт ли это к потере производительности. Не могли бы вы дать пояснение, пример как правильно назначать и получать значения из DLL типов double, char.

Использую Python v3.1.3
doza_and
Я подозреваю самый быстрый способ вызова - вкомпилировать ваши функции в интерпретатор пользоваться
Python/C API Reference Manual и обойтись без dll. У вас будет потеря производительности по сравнению с прямым включением, но не очень большая. Без конструкторов c_double не обойтись - надо преобразовывать внутренние целые питона в сишные double
Можно чуть чуть сэкономить если у вас меняются не все аргументы.
Андрей Светлов
Потери на ctypes мизерные. На них не стоит обращать внимание - у вас Питон а не С.
Не верите - измерьте сами.

P.S. Кроме restype удобно указывать еще и argtypes
gadmaker
Спасибо буду работать.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB