Используйте для многопроцессорной обработки , чтобы начать с.
Если вам нужно несколько процессоров, посмотрите на сельдерей .
Параллельный Python , возможно, стоит посмотреть, он работает в Windows, OS X и Linux (и я, кажется, вспоминаю, что некоторое время назад использовал его на машине UltraSPARC Solaris 10). Я не знаю, работает ли он с PyPy, но он действительно работает с Psyco .
После некоторого теста я обнаружил, что следующий подход работает для Linux с использованием mmap
.
В Linux есть /dev/shm
. Если вы создаете общую память с помощью POSIX shm_open
, в этой папке создается новый файл.
Хотя модуль Python mmap
не предоставляет функцию shm_open
. мы можем использовать обычный open
для создания файла в /dev/shm
, и он на самом деле похож и находится в памяти. (Используйте os.unlink
, чтобы удалить его)
Затем для IPC мы можем использовать mmap
для сопоставления этого файла с пространством виртуальной памяти различных процессов. Все процессы разделяют эту память. Python может использовать память в качестве буфера и создавать поверх нее такие объекты, как байты и пустые массивы. Или мы можем использовать его через интерфейс ctypes
.
Конечно, примитивы синхронизации процесса все еще необходимы, чтобы избежать состояния гонки.
См. mmap doc , ctypes doc и numpy.load
, который имеет опцию mmap_mode
.