Help with Python Multiprocessing

MRAB python at mrabarnett.plus.com
Thu Nov 13 13:45:35 EST 2014


On 2014-11-13 18:10, Anurag wrote:
> On Thursday, November 13, 2014 1:07:56 PM UTC-5, Anurag wrote:
>> I am having trouble understanding the Multiprocessing module.
>> I need to run three different files 'Worker1' , 'Worker2', 'Worker3' all at once. Currently I am doing this :
>>
>> from multiprocessing import Process
>>
>> import Worker1.py
>> import Worker2.py
>> import Worker3.py
>>
>>
>>
>> p1 = Process(target=Worker1.py)
>> p1.start()
>> p2 = Process(target=Worker2.py)
>> p2.start()
>> p3 = Process(target=Worker3.py)
>> p3.start()
>>
>> But this will only start the 'Worker1'. How do I execute all the three files at once?
>>
>> Thanks
>
> I am using Python 2.7 and each of my 'Worker' has a never ending loop that runs continuously.
>
The documentation has this example:


from multiprocessing import Process

def f(name):
     print 'hello', name

if __name__ == '__main__':
     p = Process(target=f, args=('bob',))
     p.start()
     p.join()


Suppose this is in a module called 'example.py'.

When 'example.py' is run as the main module, it executes:

     p = Process(target=f, args=('bob',))
     p.start()

The multiprocessing module will _import_ 'example.py' in a new process,
and because it's only imported (and not run as a main module), that
code won't be executed. The multiprocessing module will then call the
'f' function.

The way you've written your module, it'll spawn a new process even when
it's only imported, causing the spawned process to spawn another
process, which will, in turn, spawn another...




More information about the Python-list mailing list