On Thursday, November 13, 2014 3:22:49 PM UTC-8, Anurag wrote:
> On Thursday, November 13, 2014 2:18:50 PM UTC-5, sohca...@gmail.com wrote:
> > On Thursday, November 13, 2014 10:07:56 AM UTC-8, 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
> > 
> > Do your WorkerX.py files have a main() function or anything like that?  If 
> > not, they should.  Then, you'd set the targets to WorkerX.main.
> 
> My Worker files have three different functions

What I mean is that your code should probably look more like this:

# Contents of main.py
from multiprocessing import Process
import Worker1
import Worker2
import Worker3

p1 = Process(target=Worker1.main)
p1.start()
p2 = Process(target=Worker2.main)
p2.start()
p3 = Process(target=Worker3.main)
p3.start

# Contents of Worker1.py
def main():
    # Do worker1 stuff...


# Contents of Worker2.py
def main():
    # Do worker2 stuff...


# Contents of Worker3.py
def main():
    # Do worker3 stuff...

Alternatively, you could have a single worker.py, import that, but have 3 
main() functions, main1(), main2(), main3(), and set the targets for each 
process to those functions.

Maybe its because I'm less experienced as most people on this group, but 
setting a Process's target to a module and not a specific function in that 
module seems slightly strange and ambiguous to me.
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to