Я пытаюсь прочитать двоичный файл на Cython.Ранее это работало в Python, но я хочу ускорить процесс.Этот код ниже был написан как ознакомительная и логическая проверка перед написанием полного модуля.Как только этот раздел будет завершен, код будет расширен для чтения в нескольких файлах по 400 Мб и обработки.
Была создана функция, которая открывает файл, считывает количество точек данных и возвращает их в массив.
from libc.stdlib cimport malloc, free
from libc.stdio cimport fopen, fclose, FILE, fscanf, fread
def readin_binary(filename, int number_of_points):
"""
Test reading in a file and returning data
"""
header_bytes = <unsigned char*>malloc(number_of_points)
filename_byte_string = filename.encode("UTF-8")
cdef FILE *in_binary_file
in_binary_file = fopen(filename_byte_string, 'rb')
if in_binary_file is NULL:
print("file not found")
else:
print("Read file {}".format(filename))
fread(&header_bytes, 1, number_of_points, in_binary_file)
fclose(in_binary_file)
return header_bytes
print(hDVS.readin_binary(filename, 10))
Код компилируется.
При запуске кода возникает следующая ошибка:
Ошибка перестала работать Python
Я играл с этим несколько днейсейчас.Я думаю, что есть простая ошибка, но я не могу видеть это.Есть идеи?