如何关闭os.system启动的应用且不中断后续Python脚本执行?
解决方法
核心问题
os.system()会阻塞当前脚本,直到调用的子进程完全结束,这就是控制台冻结的原因。要实现「启动应用打开网页后自动终止,且不中断后续脚本」,可以用subprocess模块替代os.system,灵活控制子进程的生命周期。
具体实现
使用subprocess.Popen启动snakeviz(非阻塞模式),等待几秒让浏览器完成网页加载后,主动终止该进程:
import subprocess import time # 替换为你的实际文件名 filename = "your_profile_data.prof" # 启动snakeviz进程,当前脚本不会被阻塞 proc = subprocess.Popen(["python", "-m", "snakeviz", filename]) # 等待3秒,确保浏览器打开并加载网页(可根据实际情况调整时长) time.sleep(3) # 终止snakeviz进程 proc.terminate() # 如果terminate无法终止,改用kill强制结束 # proc.kill() # 后续脚本代码可以正常执行 print("snakeviz已自动关闭,后续脚本继续运行...")
补充说明
subprocess.Popen是os.system的替代方案,提供了更细粒度的进程控制能力,不会阻塞主脚本的执行。- 等待时长可根据你的系统响应速度调整,确保浏览器能成功打开目标网页即可。
- 如果是Windows系统,也可以通过
start命令让snakeviz在独立窗口运行,但这种方式无法直接在脚本中主动终止进程,不如subprocess方案可控。
内容的提问来源于stack exchange,提问作者DB3D
相关产品推荐
相关产品推荐

