为什么我的 python 程序在 eclipse/pydev 中调试这么慢?

问题描述 投票:0回答:3

我有一个相对简单(没有类)的 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 秒?

python eclipse performance pydev usability
3个回答
7
投票

如果我只是关闭 Eclipse GUI 中的“变量”窗口,我就可以以正常速度单步执行代码。这很棒,但是,呃,我没有变量窗口。
  • 对于我想查看的任何变量,我可以将光标悬停在变量上并查看值。我没有尝试将鼠标悬停在我的大字典上,这是这里的罪魁祸首。
  • 我还可以右键单击任何变量并添加“监视”,这会打开“表达式”窗口。在这种情况下,变量只是“表达式”的退化情况(非常简单的情况)。
  • 因此,我的解决方法是关闭 Eclipse 变量窗口,并使用表达式窗口有选择地查看变量。很痛苦,但是对于我正在做的调试来说,它比 pdb 更好。


1
投票

np.set_printoptions(threshold = 'nan')

Eclipse 似乎试图跟上太多信息。


0
投票
© www.soinside.com 2019 - 2024. All rights reserved.