1. 问题描述
在用PyCharm进行Python代码调试查看具体变量时,显示collecting data,到最后报错Timeout waiting for response,在界面中看不到变量内部的内容。
(我的Pycharm版本是2020.2)
2. 解决办法
File/Settings/,打开Setting界面,在设置项中勾选下图中的Gevent compatible。
3.Gevent compatible
如果选中此复选框,调试器将与 Gevent-monkeypatched 代码兼容。
关于Gevent-monkeypatched:
Gevent 是一个协作式多任务库。它的工作方式是您,程序员,将您的代码组织成称为 greenlets 的工作单元。当给定的 greenlet 正在运行时,它会单独运行。当它到达一个会阻塞的点时,也就是说,它必须等待一些外部信号,如文件、超时、我们的网络数据,greenlet 应该通过向 gevent 发送信号来进行合作,gevent 会安排其他一些 greenlet 运行。一旦等待的数据准备好,将恢复以前的执行。
现在,Python 的标准库stdlib(曾经?)是不合作模式。标准行为是自私地阻止,而不是向 gevent 发出可以暂停某个 greenlet 的信号。这会导致一个问题,因为只有第一个 greenlet 正在运行,其他人永远没有机会被安排。
Gevent-monkeypatched 的目的是用协作替代方案替换 stdlib 中的阻塞调用,以便现有代码可以利用 greenlet 的并发性而无需重写。
参考链接: