У меня есть проблема, которая тривиально распараллеливается: мне нужно выполнить ту же операцию с 24 объектами cdef. Я знаю, что мог бы использовать многопроцессорность для этого, но копирование данных / запуск нового процесса занимает столько же времени, сколько и последовательное выполнение вычислений, поэтому ничего не получается. Поэтому openMP может быть лучшей альтернативой.
Операция, которую я хотел бы сделать, выглядела бы так с многопроцессорной обработкой:
multiprocess.map(f, list_of_cython_objects)
Может ли что-то вроде ниже работать? Почему, почему нет? Я понимаю, что мне нужно создать массив указателей на объекты Cython, я не могу использовать списки.
from cython.parallel import prange, threadid
with nogil, parallel():
for i in prange(len(list_of_cython_objects), schedule='guided'):
f(list_of_cython_objects[i])