如何从python调用程序而不等待它返回

mar*_*nas 21 python command subprocess popen

有没有办法从python调用程序而不等待它返回?我创建了一个脚本,将程序复制到目录并运行该程序.但是当我从python调用程序时,python脚本不会退出,直到我启动的程序退出.我试过os.system和Popen.还有另一种方法吗?

添加信息:os.spawnl与os.P_DETACH仍然不起作用; 根据文档,"P_DETACH类似于P_NOWAIT,但新进程与调用进程的控制台分离".但它仍然以某种方式附加到我的调用进程(调用脚本将不会退出,直到任何被调用的可执行文件返回)

程序:

os.system("start test.exe")
print "Done"
Run Code Online (Sandbox Code Playgroud)

执行test.exe后,它会打印Done.但它不会终止脚本的执行(脚本进程仍在运行).尝试用P_DETACH创建一个守护程序线程和Popen,仍然没有去.

new*_*ver 9

我发布了一个解决方案,如何在上一个问题中分离一个过程.


Pet*_*sen 5

在 Windows 下,如果您使用 shell 命令调用该程序,START您应该能够“释放”父进程并允许其退出。尝试START /?在 DOS 提示符下了解更多信息。


Wol*_*lph 3

通过使用poll()而不是wait()on Popen,它不会阻塞,也不会等待程序运行。但是,我认为真正停止整个程序等待的唯一方法是创建一个启动进程的守护线程。这样您就永远不必等待。

class MyThread(threading.Thread):
    def run(self):
        '''Start your thread here'''
        pass

thread = MyThread()
thread.daemon = True
thread.start()
Run Code Online (Sandbox Code Playgroud)