Вопрос

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

Это было полезно?

Решение

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

Возможно, вы также захотите проверить бобовый стебель который также размещен на гитхаб

Другие советы

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

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

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

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

Parallel::ForkManager — простой менеджер форков параллельной обработки.

http://parallelforkmgr.rubyforge.org/

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top