Without threading:
Content of script1.py:
subprocess.call("python script2.py")
Output:
>python script1.py
Starting script1 function..
Script1 running.. 0
Script1 running.. 1
Script1 running.. 2
Script1 running.. 3
Launching second script..
Script2 running.. 0
Script2 running.. 1
Script2 running.. 2
Script2 running.. 3
Running script1 function again..
Script1 running.. 0
Script1 running.. 1
Script1 running.. 2
Script1 running.. 3
With threading:
Content of script1.py:
import time
import subprocess
import threading
def run():
for i in range(4):
print("Script1 running..", i)
time.sleep(1)
print("Starting script1 function..")
run()
print("Launching second script..")
t = threading.Thread(target=subprocess.call, args=("python script2.py", True))
t.start()
print("Running script1 function again..")
run()
Output:
>python script1.py
Starting script1 function..
Script1 running.. 0
Script1 running.. 1
Script1 running.. 2
Script1 running.. 3
Launching second script..
Running script1 function again..
Script1 running.. 0
Script2 running.. 0
Script1 running.. 1
Script2 running.. 1
Script1 running.. 2
Script2 running.. 2
Script1 running.. 3
Script2 running.. 3
Content of script2.py:
import time
def run():
for i in range(4):
print("Script2 running..", i)
time.sleep(1)
run()
If you rely on returns from your second script in your first script it makes things a little bit more difficult but is possible. This gives you an advantage of the previously mentioned subprocess.Popen()
method. Hope this helps to get you started.