У меня есть файлы порядка десятков ГБ, которые состоят из смеси из 10 или около того упакованных структур C. Мне нужно иметь возможность перебирать каждую структуру в файле для анализа и хотеть иметь возможность сделать этот анализ в коде python. Мне вообще не нужно писать в файл.Самый быстрый способ разбора большого двоичного файла в python
Я не думаю, что numpy может помочь здесь, потому что файлы - это не просто одна повторяющаяся структура. struct.unpack Я считаю слишком медленным.
Моей идеей до сих пор является использование Cython и mmap файла, а затем итерация и передача буфера в структуры Cython C в надежде избежать ненужного копирования. Захват, с которым я столкнулся с этим подходом, хотя я не могу напрямую использовать указатель структуры Cython C и должен эффективно писать классы оболочки python, что делает вещи немного медленнее и утомительно писать. Кто-нибудь знает об этом?
Хотите узнать, есть ли другие подходы, которые могут работать? Я еще не рассматривал ctypes.
Я фактически использую 'struct.unpack' с большими двоичными файлами и не имел проблем с реальной скоростью. Вы пытались использовать PyPy? Я думаю, поскольку 'struct.unpack' использует простые типы, он должен быть очень оптимизирован с помощью PyPy', поэтому он может дать вам необходимую скорость. – tamasgal
@septi моя основная реализация Cython занимает 2 секунды по сравнению с struct.unpack в CPython, занимая 76s и pypy 26s – stgtscc