Ok I have read your post a little closer and you want to be able to run to bits of code side by side in parallel rather than code in series on a thread that blocks the other threads when it runs.
I have done this before using the multiprocessing library see https://docs.python.org/2/library/multiprocessing.html
I found doing multi processing can open up a can of worms and I personally have had hit and miss with it. The main problem with multiprocessing over threading is threading only runs 1 thread at a time so you never end up with 2 threads writing or reading from the same bit of memory at the same time. Once you get multiprocessing running different processes on different cores at the same time (in parallel) you can run in the problem of memory corruption when 2 processes access the same bit of memory at the same time. I found sometimes the program ran fine then at other times at random the program can crash, google "multiprocessing race conditions" for more info on this.
Python isn't the best language for multiprocessing as it is a high level language and there is a lot happening under the hood that isn't seen to the programmer that can conflict with other processors on different cores.