我有一个相对简单(没有类)的 python 2.7 程序。该程序所做的第一件事是将 sqlite 数据库读入字典中。数据库很大,但不是很大,磁盘上大约 90Meg。读入大约需要 20 秒。读入数据库后,我初始化一些变量,例如
localMax = 0
localMin = 0
firstTime = True
当我在 Eclipse-3.7.0/pydev 中调试这个程序时——即使是这些简单的代码行——调试器中的每个单步都会占用 100% 的内核,并且需要 5 到 10 秒的时间。我可以看到 python 进程的 cpu 利用率达到 100%,持续 10 秒。单步...等待 10 秒...单步...等待 10 秒...如果我仅使用 pdb 在命令行进行调试,则没有问题。如果我根本不进行调试,程序会以“正常”速度运行,与 Eclipse 中的情况没什么奇怪的。
我已经在带 4G 内存的双核 Win7 PC、带 8G 内存的 8 核 Ubuntu 盒子,甚至我的 Mac Air 上重现了这一点。多平台开发怎么样!我一直认为它会起作用某处。我在任何时候都不会出现内存不足的情况。
在每个 Eclipse 单步上,为什么 python 进程会跳转到 100% CPU,并且需要 10 秒?
根据 Mikko Ohtamaa 的提示,这是一个足够好的解决方法。我刚刚在 Mac Air 上验证了以下内容:
- 如果我只是关闭 Eclipse GUI 中的“变量”窗口,我就可以以正常速度单步执行代码。这很棒,但是,呃,我没有变量窗口。
- 对于我想查看的任何变量,我可以将光标悬停在该变量上并查看其值。我没有尝试将鼠标悬停在我的大字典上,这是这里的罪魁祸首。
- 我还可以右键单击任何变量并添加“监视”,这会弹出“表达式”窗口。在这种情况下,变量只是“表达式”的退化情况(非常简单的情况)。
因此,我的解决方法是关闭 Eclipse Variable 窗口,并使用 Expressions 窗口有选择地查看变量。很痛苦,但对于我正在做的调试来说,它比 pdb 更好。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)