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

Python使用subprocess.run调用程序阻塞,需关闭程序才继续执行如何解决?

问题原因

subprocess.run() 是同步阻塞接口,默认会等待被启动的子进程完全退出后,才会继续执行后续的代码,所以你的print语句会卡在记事本关闭之后才运行。

解决方法

替换 subprocess.run() 为非阻塞的 subprocess.Popen() 即可,该接口启动子进程后会立刻返回,不会阻塞主进程的后续执行,修改后的代码如下:

import os
import subprocess

notepad_path = r'C:\Windows\System32\notepad.exe'
if os.path.exists(notepad_path):
    subprocess.Popen(notepad_path)
    print('Program executed')

补充说明

  • 如果你后续需要管理这个启动的记事本进程,可以用变量接收Popen()的返回值,后续可以通过返回的对象查询进程状态、手动终止进程等。
  • 仅在确实需要等待子进程执行完成、获取返回结果的场景下使用subprocess.run(),后台启动独立进程的场景优先用subprocess.Popen()。

内容的提问来源于stack exchange,提问作者natitati

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 14:06:08