I was working the following example from Doug Hellmann tutorial on multiprocessing:
import multiprocessing
def worker():
"""worker function"""
print 'Worker'
return
if __name__ == '__main__':
jobs = []
for i in range(5):
p = multiprocessing.Process(target=worker)
jobs.append(p)
p.start()
When I tried to run it outside the if statement:
import multiprocessing
def worker():
"""worker function"""
print 'Worker'
return
jobs = []
for i in range(5):
p = multiprocessing.Process(target=worker)
jobs.append(p)
p.start()
It started spawning processes non-stop, and the only way to stop it was reboot!
Why would that happen? Why it did not generate 5 processes and exit? Why do I need the if statement?
On Windows there is no
fork()routine, somultiprocessingimports the current module to get access to theworkerfunction. Without theifstatement the child process starts its own children and so on.