pythonconcurrencymultitasking

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()

Solution

  • You are doing it correctly. :)

    Try running this silly piece of code:

    from multiprocessing import Process
    import sys
    
    rocket = 0
    
    def func1():
        global rocket
        print('start func1')
        while rocket < sys.maxsize:
            rocket += 1
        print('end func1')
    
    def func2():
        global rocket
        print('start func2')
        while rocket < sys.maxsize:
            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'.