Reputation: 131258
I have this code:
import multiprocessing
def worker():
print 'Worker'
return
if __name__ == '__main__':
jobs = []
for i in range(5):
p = multiprocessing.Process(target=worker)
jobs.append(p)
p.start()
For whatever reason it prints 'Worker' two times and stops. Does anyone know why? What am I doing wrong?
Upvotes: 0
Views: 114
Reputation: 942
Starting multiprocessing tasks in Python on a defined value of "cores", you better choose to create a Pool and start the Process inside of that Pool.
pool = multiprocessing.Pool()
for i in range(5):
pool.apply_async(worker)
pool.close()
But if you like to do it on your way, I think you have to add a p.join()
:
import multiprocessing
def worker():
print 'Worker'
return
if __name__ == '__main__':
jobs = []
for i in range(5):
p = multiprocessing.Process(target=worker)
jobs.append(p)
p.start()
p.join()
Upvotes: 1