pycharm在Debug时,出现frames are not available; Variable: Connected.
本文为全文搬运:https://blog.csdn.net/qq_43391414/article/details/120688655。
亲测有效:
先说说我的情况,这样可以让你对号入座。
1. 我是Pycharm的Python解释器连接远程的实验室linux服务器。也就是说,你猜到了,我的是Pycharm专业版,因为专业版才有远程连接这个功能。
2. 我运行代码一切正常。但是在调试的时候有点不对劲。除了上述frames are not available, 在Variable那里还显示:connected。另外,第一步调试可以成功调到你的任何一个断点,但是此时console几乎是挂掉的,查看变量没反应,然后点击下一步调试,直接无终止运行下去。
(我卡在这里很久,因为运行一切正常嘛,就是调试卡住了。一开始我以为项目太大了?导致那些数据变量都传不过来,本地内存存不下?后面想想不至于)
后来终于发现问题了,前方高能!!!
我的代码中使用了多线程,即下面的num_workers=10。多线程在Linux服务器上运行是没有问题的。
1 dataloader = DataLoader(dataset,
2 batch_size=args.batch_size,
3 shuffle=True,
4 num_workers=10,
5 collate_fn=MyDataset.collate_fn)
但是调试的时候会出现问题,我的猜测是我们的pycharm调试界面只支持主进程,线程开了之后就不能用了。
正如我上面所展示的,上面只是DataLoader的定义,还没有正式使用这个东西,所以调试功能在正式使用多线程之前一切正常。
但是到了下面之后,emurate(dataloader)开始正式使用上面定义的多线程,从此往后,Pycharm调试界面将会卡死。
1 2 3 4 5 | for epoch in range (args.epochs): model.train() epoch_loss = [] for idx, feed_dict in enumerate (dataloader): print (idx) |
所以解决方法很简单了,不管你的代码是不是和我一样,请检查你的代码是否用了多线程。运行的时候开启多线程加快运行速度,但是调试的时候在代码中把多线程关闭!!!
1 2 3 4 5 | dataloader = DataLoader(dataset, batch_size = args.batch_size, shuffle = True , num_workers = 0 , #或者直接不要这个参数,默认是0 collate_fn = MyDataset.collate_fn) |
问题解决!!
这个问题困扰了我一下午,因为多线程调试并不会报错,只是用不了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
2019-09-20 labelImg