Как преобразовать указатель на массив c в массив Python

У меня есть функция обратного вызова C ++, которая вызывает в Python с использованием ctypes. Параметры этой функции - указатель на массив double и количество элементов.

Есть много элементов, около 2 000 000. Мне нужно отправить это в функции scipy.

Прототип C ++:

bool (*ptsetDataSource)(double*, long long);

это следующий код Python:

CPF_setDataSource = CFUNCTYPE(c_bool, POINTER(c_double),c_longlong)
CPF_setSelection= CFUNCTYPE(c_bool,c_char_p, c_longlong,c_longlong)
CPF_ResetSequence = CFUNCTYPE(c_bool)

def setDataSource(Data, DataLength):
    Datalist=[0.0]*100
    for i in range(0,100):
        Datalist[i]=Data[i]

    print Datalist
    return True

Проблема в том, что print datalist возвращает:

[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]

что не правильно (данные заполнены множеством других чисел, если проверено на стороне c ++.

Кроме того, если я использую этот код для преобразования данных в список Python, он блокирует компьютер на этапе выделения.

Есть ли способ загрузить данные из массива C ++, а затем преобразовать их в массив, подходящий для scipy?

Ответы на вопрос(1)

Ваш ответ на вопрос