Search code examples
pythonmultiprocessingblocking

Blocking subprocess function in Python?


I had an asynchronous function being called like this:

from multiprocessing import Process

def my_function(arg1, arg2):
    print 'Long process begins'

p = Process(target=my_function, args=(arg1, arg2,)).start()

How can I make this blocking? I need to finish the process before running the rest of the script.


Solution

  • Use p.join()

    Block the calling thread until the process whose join() method is called terminates or until the optional timeout occurs.

    If timeout is None then there is no timeout.

    A process can be joined many times.

    A process cannot join itself because this would cause a deadlock. It is an error to attempt to join a process before it has been started.