Python - разделить массив Numpy между процессами? - PullRequest
10 голосов
/ 05 июля 2011

Я бы хотел использовать модуль python's multiprocessing для использования многоядерного сервера Linux.

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

Вместо использования list или queue возможно ли иметь многомерный массив numpy в качестве общего объекта?

Ответы [ 3 ]

8 голосов
/ 02 апреля 2012

Мне кажется, я знаю, что вы ищете: https://bitbucket.org/cleemesser/numpy-sharedmem/issue/3/casting-complex-ndarray-to-float-in

На веб-странице есть краткое описание: модуль общей памяти для numpy от Sturla Molden и G. Varoquaux, позволяющий легко распределять память между процессами в виде массивов NumPy. Первоначально опубликовано в списке рассылки пользователей SciPy.

Я сам этим пользуюсь. Совместное использование массивов NumPy между процессами. Работает очень хорошо для меня.

5 голосов
/ 05 июля 2011

Посмотрите на это .Мне не кажется легким, но это выполнимо.

Редактировать: Ссылка гнила, я связался с другой копией.

0 голосов
/ 10 мая 2015

Я обнаружил, что даже если вы не измените массив numpy после того, как fork () запустит кучу дочерних процессов, вы все равно увидите, что ваш RAM-файл будет расти как дочерние процессы, копирующие при записи объект по какой-то причине.

Вы можете ограничить (или полностью облегчить?) Эту проблему, установив

"yourArray.flags.writeable = False"

ПЕРЕД fork () 'ing / Pool ()', который, по-видимому, не позволяет использовать ОЗУ, и намного меньше хлопот, чем другие методы:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...