Выравнивание памяти для быстрого БПФ в Python с использованием общих массивов

Я пишу приложение для обработки изображений которому нужно делать несколько вещей, и он должен делать их как можно больше в режиме реального времени. Сбор данных и их обработка выполняются в отдельных процессах (главным образом из соображений производительности). Сами данные довольно большие (2MPix 16-битные изображения в градациях серого).

Я могу обмениваться массивами между процессами, как это описано в этом посте: Как передавать большие массивы numpy между подпроцессами python без сохранения на диск?(Я использую скрипт shmarray из пакета numpy-shared). Я могу без проблем выполнить предоставленное Numpy FFT для этих данных, но это довольно медленно.

Вызов FFTW, вероятно, был бы намного быстрее, но для того, чтобы получить от него все преимущества, я должен запускать свои операции с массивами, выровненными по памяти.

Вопрос: есть ли способ создавать и совместно использовать Numpy-подобные массивы между процессами, которые в то же время гарантированно будут выровнены по памяти?

5
задан Cœur 24 February 2019 в 03:59
поделиться