#!/usr/bin/env python from multiprocessing import Pool import threading import time import logging logging.basicConfig(level=logging.DEBUG) def call(x): z = 0 for y in xrange(0, 1000000): z += 1 print "hello world %d" % x def worker(x): pool = Pool(processes=1) result = pool.apply_async(call, (x,)) retval = result.get() pool.close() pool.join() return result tds = [] print "starting" for x in xrange(0, 100): t = threading.Thread(None, worker, None, (x,)) tds.append(t) t.start() for t in tds: t.join()