Эффективный IPC между Python и Python [закрыто]

26
задан Jonathan 22 October 2011 в 21:55
поделиться

3 ответа

Используйте для многопроцессорной обработки , чтобы начать с.

Если вам нужно несколько процессоров, посмотрите на сельдерей .

8
ответ дан 28 November 2019 в 07:20
поделиться

Параллельный Python , возможно, стоит посмотреть, он работает в Windows, OS X и Linux (и я, кажется, вспоминаю, что некоторое время назад использовал его на машине UltraSPARC Solaris 10). Я не знаю, работает ли он с PyPy, но он действительно работает с Psyco .

5
ответ дан 28 November 2019 в 07:20
поделиться

После некоторого теста я обнаружил, что следующий подход работает для 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.

6
ответ дан 28 November 2019 в 07:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: