我有一个相对简单(无类)的 python 2.7 程序。该程序做的第一件事是将 sqlite 数据库读入字典。数据库很大,但不是很大,磁盘上大约 90Meg。读入大约需要 20 秒。读入数据库后,我初始化了一些变量,例如
localMax = 0
localMin = 0
firstTime = True
当我在 Eclipse-3.7.0/pydev 中调试这个程序时——即使是这些简单的行——调试器中的每个单步都会占用 100% 的内核,并且需要 5 到 10 秒。我可以看到 python 进程在 10 秒内达到 100% cpu。单步...等待 10 秒...单步...等待 10 秒...如果我只使用 pdb 在命令行调试,没问题。如果我根本不进行调试,程序将以“正常”速度运行,这与 Eclipse 中的一样不奇怪。
我已经在带 4G 内存的双核 Win7 PC、带 8G 内存的 8 核 Ubuntu 机器甚至我的 Mac Air 上重现了这个。多平台开发怎么样!我一直认为它会在某处 起作用。我从来没有在任何时候接近耗尽内存。
为什么在每次 Eclipse 单步执行时,python 进程都会跳到 100% CPU,并且需要 10 秒?
最佳答案
根据 Mikko Ohtamaa 的提示,这里有一个足够好的解决方法。我刚刚在我的 Mac Air 上验证了以下内容:
- 如果我只是关闭 Eclipse GUI 中的“变量”窗口,我就可以以正常速度单步执行代码。这很好,但是,呃,我没有“变量”窗口。
- 对于我想查看的任何变量,我可以将光标悬停在该变量上并查看其值。我没有试图将鼠标悬停在我的大词典上,这是这里的罪魁祸首。
- 我还可以右键单击任何变量并添加一个“观察”,这会弹出一个“表达式”窗口。在这种情况下,变量只是 '表达式的退化情况(非常简单的情况)。
因此,我的解决方法是关闭 Eclipse 变量窗口,并使用表达式窗口有选择地查看变量。一个痛苦,但对于我正在做的调试,它比 pdb 更好。
关于python - 为什么我的 python 程序在 eclipse/pydev 中调试这么慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6893553/