在Python中启动外部程序并立即返回

jbb*_*nes 1 python qt pyqt

可能重复:
如何从python调用程序而不等待它返回

我正在编写一个需要启动外部Windows可执行文件的PyQt程序.此时,Python程序应该继续运行,从不需要与它启动的exe文件进行任何联系.

我尝试了几种变体,例如:

process = subprocess.Popen(["vncviewer.exe"]); process.communicate()
subprocess.call("vncviewer.exe")
os.system("vncviewer.exe")
os.system("vncviewer.exe&")
os.system("start vncviewer.exe")
Run Code Online (Sandbox Code Playgroud)

等等

使用大多数任何策略,我都可以成功运行程序,但是Python脚本会被阻止,直到程序完成.GUI被冻结且无法使用.

我怎样才能让Python启动一个完全独立且无关的任务,然后继续运行以便我可以打开其他程序,甚至结束Python脚本而不影响它启动的程序?

lun*_*orn 6

PyQt4.QtCore.QProcess.startDetached() 在后台独立执行程序:

QProcess.startDetached('vncviewer.exe')
Run Code Online (Sandbox Code Playgroud)

Dougal建议的单独一个subprocess.Popen()对象不同,即使在调用进程终止后,使用此方法启动的进程也会继续运行.

在PyQt4的程序,更喜欢QProcesssubprocess.前者集成到Qt事件循环中,并允许通过Qt信号与子过程进行异步通信.