【问题标题】:Why is debugging in eclipse/pydev so slow for my python program?为什么我的 python 程序在 eclipse/pydev 中调试这么慢?
【发布时间】:2011-10-17 03:18:48
【问题描述】:

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

【问题讨论】:

  • 不知道,但我有一种预感,它可能与 Eclipse 调试器视图有关,它试图在看门狗窗口中输出局部变量,并且这个过程以某种方式失败(例如,它试图打印SQlite 数据库作为字符串)。解决这个问题的唯一方法是发布完整的程序源代码,以可重复的方式表达问题。
  • 根据我的经验,我只是因为 eclipse 占用了太多内存而愤怒了很多次,并且在某些部分很慢,所以我决定学习 pdb。它是旧的方式,但它的速度很快,它永远不会让你失望。我使用了一个名为 ipdb btw 的增强版本。
  • 如果 Eclispe 试图“观看”我的大字典,Eclipse 会在每一步都“忙碌”。有什么方法可以让 Eclipse 忽略我的大字典?也许如果我只是关闭 Eclipse GUI 中的变量窗口...
  • 我在 Windows 和 Linux 上使用 Eclipse 来开发、管理和调试庞大的 Java 代码库和非常简单的 Python 项目。两年来,我从未遇到过使用 Java 的缓慢问题,而在这方面,PyDev 开发导致了 PITA,即使在多核系统上也是如此。不幸的是,我得出的结论是,实际上,如果不接受(有时是大的)妥协,Eclipse 平台并不是 Python 编程的最佳工具。

标签: python eclipse performance pydev usability


【解决方案1】:

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

  • 如果我只是关闭 Eclipse GUI 中的“变量”窗口,我可以以正常速度单步执行代码。这很好,但是,呃,我没有“变量”窗口。
  • 对于我想查看的任何变量,我可以将光标悬停在变量上并查看其值。我没有试图将鼠标悬停在我的大字典上,这是罪魁祸首。
  • 我还可以右键单击任何变量并添加一个“观察”,这会打开一个“表达式”窗口。在这种情况下,变量只是'表达式的退化情况(非常简单的情况)。

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

【讨论】:

    【解决方案2】:

    我只是把这行注释掉了:

    np.set_printoptions(threshold = 'nan')
    

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

    【讨论】:

    • 这条线在哪里?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-28
    • 2013-07-26
    • 1970-01-01
    • 1970-01-01
    • 2011-02-11
    相关资源
    最近更新 更多