I have a function that is side-effect free. I would like to run it for every element in an array and return an array with all of the results.
Does Python have something to generate all of the values?
Try the Pool.map function from multiprocessing:
http://docs.python.org/library/multiprocessing.html#using-a-pool-of-workers
It's not multithreaded per-se, but that's actually good since multithreading is severely crippled in Python by the GIL.