Roman
Roman

Reputation: 131258

Why multiprocessing does not work?

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

Answers (1)

nrhode
nrhode

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

Related Questions