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

时间:2011-08-01 01:46:36

标签: python eclipse performance pydev usability

我有一个相对简单(没有类)的python 2.7程序。该程序的第一件事是将sqlite dbase读入字典。数据库很大,但不是很大,在磁盘上大约90Meg。读入大约需要20秒。在数据库中读取后,我会初始化一些变量,例如

localMax = 0
localMin = 0
firstTime = True

当我在Eclipse-3.7.0 / pydev中调试这个程序时 - 即使是这些简单的行 - 调试器中的每一步都会占用100%的核心,需要5到10秒。我可以看到python进程达到100%cpu 10秒。单步......等待10秒......单步......等待10秒......如果我只是在命令行调试,只使用pdb,没问题。如果我根本没有调试,那么程序以“正常”的速度运行,就像在Eclipse中一样奇怪。

我在具有4G内存的双核Win7 PC,我的8核Ubuntu内存,8G内存,甚至是我的Mac Air上再现了这一点。对于多平台开发来说,这是怎么回事!我一直认为它可以在某处工作。我在任何时候都不会接近内存不足。

在每个Eclipse的单步操作中,为什么python进程会跳转到100%的CPU,需要10秒?

2 个答案:

答案 0 :(得分:7)

根据Mikko Ohtamaa的暗示,这是一个足够好的解决方法。我刚刚在Mac Air上验证了以下内容:

  • 如果我只是关闭Eclipse GUI中的“变量”窗口,我可以以正常速度单步执行代码。哪个好,但是,呃,我没有Variables窗口。
  • 对于我想看的任何变量,我可以将光标悬停在变量上并查看值。我并没有试图将鼠标悬停在我的大词典上,而这本词典就是罪魁祸首。
  • 我也可以右键单击任何变量并添加一个'Watch',它会弹出一个'Expressions'窗口。在这种情况下,变量只是'表达式的简并情况(非常简单的情况)。

因此,我的解决方法是关闭Eclipse Variable窗口,并使用Expressions窗口有选择地查看变量。很痛苦,但对于调试我正在做的比pdb更好。

答案 1 :(得分:1)

我只是评论了这一行:

np.set_printoptions(threshold = 'nan')

看来eclipse正试图跟上太多的信息。