Or Go. Though unlike Erlang processes, Go doesn't make mutating shared memory in multiple threads impossible. Go just makes it really easy to never do it.
We'd initially talked about what modules and what main threads would be needed, but I started getting paranoid.
So we're going to be using the Python multiprocessing library, and ZeroMQ plus JSON for the communication between the parts.