Matplotlib旧脚本进程反复弹出图形窗口问题求助
解决Matplotlib图形窗口在脚本终止后随机弹出的问题
问题定位
结合你提供的信息,问题由三个核心因素共同导致:
- 此前使用
plt.ion()开启的Matplotlib交互模式未彻底关闭,残留进程在后台触发窗口弹出 - VSCode的自动执行机制(保存文件触发)启动了残留的脚本进程
- pytorch_grad_cam依赖的OpenCV库可能存在未清理的窗口进程
针对性解决步骤
1. 修复Matplotlib资源清理逻辑
修改脚本末尾的Matplotlib调用代码,确保彻底关闭交互模式与所有窗口:
plt.ioff() # 强制关闭交互模式(针对之前使用plt.ion()的场景) plt.close('all') # 关闭所有图形窗口
2. 禁用VSCode的自动执行功能
由于触发操作是保存文件,需关闭VSCode中自动运行脚本的配置:
- 打开VSCode设置,搜索
python.runOnSave,将其设置为false - 若安装了Code Runner等扩展,进入扩展设置,关闭“保存时自动运行”选项
3. 彻底清理VSCode关联进程
杀死所有VSCode相关进程,清除残留的Python子进程:
pkill -f "code"
重启VSCode后,所有关联进程会被重置。
4. 替换Matplotlib后端(可选)
Ubuntu默认后端可能存在进程残留问题,可强制使用更稳定的后端:
在脚本开头添加:
import matplotlib matplotlib.use('TkAgg') # 替换为稳定的交互式后端 # 若无需可视化,可使用非交互式后端:matplotlib.use('Agg')
5. 清理OpenCV残留窗口
pytorch_grad_cam的show_cam_on_image可能调用OpenCV创建窗口,需手动清理:
在脚本末尾添加:
import cv2 cv2.destroyAllWindows()
验证方法
- 运行修改后的脚本,确认执行完成后无残留Python进程(用
top或htop检查) - 在VSCode中保存任意文件,观察是否还会弹出Matplotlib窗口
- 连续操作多次,确认问题不再复现
内容的提问来源于stack exchange,提问作者CamB04
相关产品推荐
相关产品推荐

