Changed multiprocessing.Queue to multiprocessing.Manager.JoinableQueue.
Apparently, this avoids some kind of deadlock that a child process may hang if the queue
it put stuff in is not emptied before the parent process calls join() on it.
See: http://docs.python.org/3/library/multiprocessing.html#multiprocessing-programming