user2739601 user2739601 - 1 month ago 8
Python Question

Python: Executing multiple functions simultaneously

I'm trying to run two functions simultaneously in Python. I have tried the below code which uses

multiprocessing
but when I execute the code, the second function starts only after the first is done.

from multiprocessing import Process
def func1:
#does something

def func2:
#does something

if __name__=='__main__':
p1 = Process(target = func1)
p1.start()
p2 = Process(target = func2)
p2.start()

Answer

You are doing it correctly. :)

Try running this silly code:

from multiprocessing import Process
import sys

rocket = 0

def func1():
    global rocket
    print 'start func1'
    while rocket < sys.maxint:
        rocket += 1
    print 'end func1'

def func2():
    global rocket
    print 'start func2'
    while rocket < sys.maxint:
        rocket += 1
    print 'end func2'

if __name__=='__main__':
     p1 = Process(target = func1)
     p1.start()
     p2 = Process(target = func2)
     p2.start()

You will see it print 'start func1' and then 'start func2' and then after a (very) long time you will finally see the functions end. But they will indeed execute simultaneously.

Because processes take a while to start up, you may even see 'start func2' before 'start func1'.

Comments