I find myself constantly working on apps that need a mechanism to split an array of objects into multiple threads or CPUs to perform things on those objects, then return processing back to the main thread.

But it's still something I find surprisingly difficult to do in Ruby/Rails. There's definitely libraries that successfully help, but they all suffer from problems around versions of Ruby being used (green threads, native threads, interpreter locks), your OS/environment (Windows/Mac/Linux), connection pooling, memory management, etc.

It dawned on me though that we already have a really interesting place to do parallel processing and communication amongst multiple threads/CPUs that's fairly agnostic of environment AND has built in fault tolerance: our current Job queue.

Whether we're using Resque/Sidekiq/Delayed Job/etc. Why not send things there for parallel processing our main thread waits for execution?

So here's a proof of concept to do just that. It's called Nectarine.

Monthly Downloads: 12
Programming language: Ruby
License: MIT License
Tags: Core Extensions     Performance     Parallel     Jobs     Active Job    

nectarine alternatives and similar gems

Based on the "Core Extensions" category

Do you think we are missing an alternative of nectarine or a related project?

Add another 'Core Extensions' Gem