#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-а есть подобная функция.
Комментариев нет:
Отправить комментарий