Страницы

Поиск по вопросам

суббота, 1 февраля 2020 г.

Управление процессами или одно задание на всех

#python


Есть N-е количество процессов (не важно, треды, форки или просто программы). Им всем
надо передать какую-то информацию, например, о неком событии. То есть, нужно чтобы
было одно место, откуда они все должны брать информацию.
Как это обычно реализуется?    


Ответы

Ответ 1



Ищите в сторону словосочетаний «publish-subscribe» и «message bus.» Там много можно найти вариантов, выбирайте на вкус и под задачу. Например, Если похитрее, и чтобы с очередями и подтверждением доставки — AMQP-сервер, скажем, RabbitMQ. Или не AMQP а STOMP использовать. Если более примитивно — Redis, например, да. Опять же, иногда все уже есть в системе. Например, часто можно встретить D-Bus на *nix'овых десктопах. Правда D-Bus по сети — это (хоть и возможно) очень, очень через задницу и только после огромного напильника, так что решение только в пределах одной машины. А если в конторе есть XMPP-сервер — оно тоже можо использовать. Если без сервера — у 0MQ (aka ZeroMQ) есть pub/sub возможности. Или вообще старые добрые (но малоизвестные) POSIX message queues, если надо в пределах одной машины.

Ответ 2



Навскидку - через пайпы. Можете посмотреть, как это реализовано, например в Google Test. Там каждый тест запускается в отдельном процессе и весь interop с главным процессом происходит через pipes (естественно, кроссплатформенно).

Ответ 3



Оказалось, что у Redis-а есть подобная функция.

Комментариев нет:

Отправить комментарий