Многопроцессорная обработка Python с несвязанными процессами - PullRequest
2 голосов
/ 02 февраля 2011

У меня есть много процессов, которые порождаются отдельно, а не от родителя к ребенку.Процессы должны отправить сообщение конкретным процессам.Адрес принимающего процесса (pid) может быть сохранен в базе данных, но процессы не могут совместно использовать какие-либо общие переменные в памяти.

Я не смог найти какой-либо способ сделать это с помощью многопроцессного пакета pythons, и теперь я изучаюсервер на основе сокетов, но эта проблема все еще оставляла мне любопытный вопрос, можно ли реализовать такую ​​архитектуру с помощью многопроцессорной обработки. Преимущество состоит в том, чтобы легко передавать выбираемые объекты.

1 Ответ

2 голосов
/ 02 февраля 2011

Процессы должны отправить сообщение определенным процессам. Адрес принимающего процесса (pid) может быть сохранен в базе данных, но процессы не могут совместно использовать какие-либо общие переменные в памяти.

База данных? Зачем? Каждый использует файл для этого, так как файл дешев, доступен, и вы храните только одно целое значение.

Также. Поскольку вы собираетесь использовать файл, у вас есть более интересные варианты.

  1. Каждый процесс записывает сообщение в именованный канал. Процесс получения принимает запросы от именованного канала.

  2. Каждый процесс записывает сообщение в файл. Простая блокировка гарантирует, что только один процесс одновременно имеет доступ к файлу, обеспечивая сериализацию. Процесс получения читает из этого файла.

  3. Каждый процесс использует HTTP для отправки запроса RESTful получающему процессу. Процесс обработки использует урезанную структуру HTTP-сервера для обработки запросов.

  4. Каждый процесс использует очередь сообщений для постановки в очередь сообщений. Процесс получения исключает сообщения из очереди. Очередь представляет собой файл.

и т.д.. И да, есть еще. Но они начинают становиться специфичными для ОС.

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