Python subprocess.popen() without waiting

12,278

Solution 1

Just don't call myProc.communicate() if you don't want to wait. subprocess.Popen will start the process.

Solution 2

Call the script in another window.

myProc = subprocess.Popen(["start", sys.executable, "script2.py", "argument"])
myProc.communicate()

start is a windows shell function that runs a program separately, allowing the current one to continue its process. I haven't tested this as I've no access to a Windows OS, but The linux equivalent (nohup) works as required.

If you need fine control over what happens with script2.py, refer to the multiprocessing module here.

Share:
12,278

Related videos on Youtube

jul
Author by

jul

Updated on September 01, 2022

Comments

  • jul
    jul over 1 year

    I'm using Python 3.4.2 on Windows. In script1.py I'm doing this:

    myProc = subprocess.Popen([sys.executable, "script2.py", "argument"])
    myProc.communicate()
    

    it works and call script2.py . The problem is that in script2.py there is a infinite loop (there must be) and the script1.py is waiting for script2.py to finish. How can I tell to script1.py to just call script2.py and don't wait for the process to finish?

  • jul
    jul about 9 years
    I can't believe it..sorry for the silly question, and thanks for the reply.