Python调用脚本而不等待它执行

时间:2018-01-14 18:12:25

标签: python multithreading python-3.x python-multiprocessing python-multithreading

我想知道是否有任何方法可以调用python脚本并在另一个线程中完全启动该程序,因此主程序(调用者)不必等到被调用脚本完成执行。到目前为止,我已经尝试过subprocess和os.system,但这两个都延迟到脚本完成执行。

main.py

os.system('"F:\second.py"')
//continue the rest of the code without waiting for second.py to finish

second.py

//do stuff

2 个答案:

答案 0 :(得分:2)

您可以尝试subprocess

first.py

import subprocess
subprocess.Popen(["python.exe", "second.py"])
print "done"

second.py

import time
for i in range(10):
    print i
    time.sleep(10)

编辑:

如果你想完全分离第一个和第二个脚本添加一个标志

first.py

import subprocess
subprocess.Popen(["python.exe", "second.py"], creationflags=subprocess.CREATE_NEW_CONSOLE)
print "done"

答案 1 :(得分:0)

如果您使用的是Unix计算机,则可以使用os.fork()创建一个单独的进程,即使父进程已完成,该进程也将继续运行。例如:

<强> main.py

import os

pid = os.fork()
if pid == 0: # pid is only equal to 0 in the child process
    os.system('python second.py')

<强> second.py

import time

time.sleep(2)
print("I'm a child process!")