Not sure if I have time to read this...but as I understand it, multithreading in python is much slower than single threading...this is due to the GIL:  Only one thread can run at a time, so the different threads just take turns...  Multiprocessing has almost the same API, but spawns separate processes and therefore has a chance at being faster...of course since processes don't share memory you need to pickle/pipe...  but in any case, I'm pretty sure multithreading is always slow.