可能重复:
如何从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脚本而不影响它启动的程序?
PyQt4.QtCore.QProcess.startDetached() 在后台独立执行程序:
QProcess.startDetached('vncviewer.exe')
Run Code Online (Sandbox Code Playgroud)
与Dougal建议的单独一个subprocess.Popen()对象不同,即使在调用进程终止后,使用此方法启动的进程也会继续运行.
在PyQt4的程序,更喜欢QProcess了subprocess.前者集成到Qt事件循环中,并允许通过Qt信号与子过程进行异步通信.
| 归档时间: |
|
| 查看次数: |
3382 次 |
| 最近记录: |