29

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

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

程序:

os.system("start test.exe")
print "Done"

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

4

2 回答 2

4

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

于 2010-04-08T17:48:57.613 回答
3

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

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

thread = MyThread()
thread.daemon = True
thread.start()
于 2010-04-08T17:27:55.850 回答