You may try a basic example like:
from threading import Thread
def process(data):
print "processing %s" % data
all = ["data1", "data2", "data3"]
for task in all:
t = Thread(target=process, args=(task,))
t.start()
Here's a repl and an brief tutorial which shows how to let your caller pause for the threads to join if desired.
In regards to using all your cores, I don't have any information on that, but here are some resources that might be helpful: [1], [2], [3]