Работа с несколькими процессами в Ruby - PullRequest
4 голосов
/ 02 апреля 2009

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

Ответы [ 3 ]

3 голосов
/ 02 апреля 2009

Я думаю, вы можете делать многое из того, что хотите, используя возможности Ruby IO; вы разделяете процессы, а не потоки, правильно?

Если это так, IO.pipe сделает то, что вам нужно. В Ruby нет встроенного способа обработки межпроцессных очередей (насколько мне известно), но вы также можете использовать FIFO (если вы используете Unix).

Если вы хотите что-то более детальное и с хорошей поддержкой потоков, я вполне уверен, что вы можете использовать java.util.concurrent при использовании JRuby. MRI имеет довольно паршивую поддержку многопоточности / параллелизма, так что если это то, к чему вы стремитесь, JRuby, вероятно, является лучшим местом для поиска.

2 голосов
/ 03 апреля 2009

Я столкнулся с этой библиотекой, но еще не пробовал.

Parallel :: ForkManager - Простой диспетчер параллельной обработки.

http://parallelforkmgr.rubyforge.org/

1 голос
/ 02 апреля 2009

Комбинация DRb, которая обеспечивает простое межпроцессное взаимодействие, с Queue или SizedQueue, которые являются потоками безопасной очереди, должна дать вам то, что вам нужно.

Вы также можете проверить beanstalkd , который также размещен на github

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