为什么eclipse/pydev中的调试对于我的python程序来说如此缓慢?

为什么eclipse/pydev中的调试对于我的python程序来说如此缓慢?,python,eclipse,performance,pydev,usability,Python,Eclipse,Performance,Pydev,Usability,我有一个相对简单(没有类)的Python2.7程序。程序要做的第一件事是将sqlite数据库读入字典。数据库很大,但不是很大,磁盘上大约有90Meg。读入大约需要20秒。在读取数据库后,我初始化了一些变量,例如 localMax = 0 localMin = 0 firstTime = True 当我在Eclipse-3.7.0/pydev中调试这个程序时——即使是这些简单的代码行——调试器中的每一步都会消耗掉100%的内核,需要5到10秒。我可以看到python进程在10秒内达到100%cp

我有一个相对简单(没有类)的Python2.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中的情况完全不同

我已经在双核Win7 PC(带4G内存)、8核UbuntuBox(带8G内存)甚至Mac Air上复制了这一功能。对于多平台开发来说,情况如何!我一直在想它会在某个地方起作用。我在任何时候都不会接近内存耗尽


在Eclipse的每一个步骤中,为什么python进程都会跳到100%CPU,并花费10秒的时间?

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

  • 如果我简单地关闭EclipseGUI中的“Variables”窗口,我就可以以正常的速度一步完成代码。这很好,但是,我没有变量窗口
  • 对于我想要查看的任何变量,我可以将光标悬停在变量上并查看值。我没有试图在我的大字典上徘徊,这是罪魁祸首
  • 我还可以右键单击任何变量并添加一个“Watch”,这将打开一个“Expressions”窗口。在这种情况下,变量只是“表达式”的退化情况(非常简单的情况)

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

我只是简单地注释了这一行:

np.set_printoptions(threshold = 'nan')

eclipse似乎试图跟上太多的信息。

不知道,但我有一种预感,它可能与eclipse debugger视图有关,该视图试图在watchdog窗口中输出局部变量,但不知何故,该过程失败了(例如,它试图将SQlite数据库的转储打印为字符串)。继续这篇文章的唯一方法是你发布一个完整的程序源代码,它以一种可重复的方式表达了这个问题。根据我的经验,我曾经多次因为eclipse占用了太多内存而感到愤怒,并且在某些部分速度太慢,以至于我决定学习pdb。这是老办法,但速度很快,永远不会让你失望。我使用了一个名为ipdb btw的增强版本。如果Eclispe试图“监视”我的大字典,那么Eclipse在每一步上都会“忙起来”。有没有办法让Eclipse忽略我的大字典?如果我只是关闭EclipseGUI中的变量窗口……我在Windows和Linux上使用Eclipse来开发、管理和调试巨大的Java代码库和非常简单的Python项目。两年来,我在使用Java时从来没有遇到过速度慢的问题,而在这方面,PyDev开发带来了PITA,即使是在多核系统上。不幸的是,我得出的结论是,实际上,在不接受(有时是大的)妥协的情况下,Eclipse平台并不是Python编程的最佳工具?