У меня есть код, который задает два параметра, (k, m) вернет массив 4d numpy, мое требование состоит в том, что мне нужно вычислить этот массив для возможных значений (k, m) с k, m < N и добавить их. Это медленно в серийном режиме, поэтому я пытаюсь изучить модуль многопроцессорности в python для этого. https://docs.python.org/2/library/multiprocessing.htmlмодуль многопроцессорности python, общий многомерный массив
По сути, я хочу использовать 8 ядер для параллельного вычисления этих 4d-массивов и добавления их всех. Теперь вопрос заключается в том, как это сделать. Каждый массив может быть около 100 МБ и N около 20. Таким образом, сохранение 20 ** 2 * 100 МБ в очереди невозможно. Решение состояло бы в том, чтобы иметь объект общей памяти, массив результатов, в котором каждый процесс будет продолжать добавлять результаты.
У многопроцессорной обработки есть два способа для этого, используя общую память или серверный процесс. Ни один из них, похоже, не поддерживает массивы mutlidim. Может ли кто-нибудь предложить способ реализации моей программы? Thx заранее.
['numpy.memmap()'] (http://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.memmap.html) может помочь вам (или нет). Посмотрите здесь http://stackoverflow.com/questions/17785275/share-large-read-only-numpy-array-between-multiprocessing-processes для указателей. –
Возможный дубликат [Использовать массив numpy в общей памяти для многопроцессорной обработки] (http://stackoverflow.com/questions/7894791/use-numpy-array-in-shared-memory-for-multiprocessing) – ppperry