Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to launch and run external script in background? [duplicate]

I tried these two methods:

os.system("python test.py")

subprocess.Popen("python test.py", shell=True)

Both approaches need to wait until test.py finishes which blocks main process. I know "nohup" can do the job. Is there a Python way to launch test.py or any other shell scripts and leave it running in background?

Suppose test.py is like this:

for i in range(0, 1000000):
    print i

Both os.system() or subprocess.Popen() will block main program until 1000000 lines of output displayed. What I want is let test.py runs silently and display main program output only. Main program may quie while test.py is still running.

like image 222
jack Avatar asked Oct 22 '09 07:10

jack


Video Answer


1 Answers

subprocess.Popen(["python", "test.py"]) should work.

Note that the job might still die when your main script exits. In this case, try subprocess.Popen(["nohup", "python", "test.py"])

like image 172
Aaron Digulla Avatar answered Oct 27 '22 08:10

Aaron Digulla