You need to put your actual program logic in the direction of the if __name__ == '__main__': block.
On Unixy systems, Python forks that produce multiple processes to work with. There is no plug in Windows. Python should start a new interpreter and re-import all your modules. This means that each subprocess will be reimport your main module. For the code you wrote, reimporting the module will cause each recently launched process to start its own processes.
See: http://docs.python.org/library/multiprocessing.html#windows
EDIT this works for me:
from multiprocessing import Pool def increment(x): return x + 1 def decrement(x): return x - 1 if __name__ == '__main__': pool = Pool(processes=2) res1 = pool.map_async(increment, range(10)) res2 = pool.map_async(decrement, range(10)) print res1.get(timeout=1) print res2.get(timeout=1)
source share