You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python subprocess.run启动外部程序后如何继续执行下一行代码

问题根因

subprocess.run 是同步调用接口,设计上会阻塞当前主进程,等待子进程完全终止后才会返回执行结果,因此启动记事本后,主进程会停在调用行,直到记事本被关闭才会继续执行后续print逻辑。

修复方案

使用subprocess.Popen替代subprocess.run即可。Popen会异步启动子进程,启动完成后立刻返回进程对象,不会等待子进程退出,主进程后续代码会立即执行。
可直接运行的修正代码:

import subprocess

if __name__ == '__main__':
    subprocess.Popen("C:/Windows/System32/notepad.exe")
    print("hiiiiii")

优化建议

  • 传参时优先使用列表格式传入命令和参数,避免路径包含空格、特殊字符时出现解析异常,更稳妥的写法:
    subprocess.Popen(["C:/Windows/System32/notepad.exe"])
    
  • 若后续需要获取子进程的退出码、输出内容,可以保存Popen返回的进程实例,在需要的节点调用wait()或communicate()方法即可,不会影响启动阶段的非阻塞效果。

内容的提问来源于stack exchange,提问作者Yenike Raghu Ram

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 23:03:53