Eclipse PyDev完成挂起(又一次)

时间:2011-09-18 18:59:13

标签: eclipse autocomplete hang performance

我在Eclipse中使用PyDev作为我的Python编辑器。它在功能集方面很好。一切都很好,除了一件非常讨厌的事情:

代码完成本身很快。当我按下Alt + Space时,窗口几乎立即弹出,所有选项都在那里。选中顶部的选项。 然后麻烦。详细描述直到约5-10秒才出现。所有这些时间CPU都在最大负载下工作,并且接口没有响应。所有处理器都被Eclipse Java进程占用(生成的Python进程似乎空闲)。然后弹出一个黄色窗口,它包含的只是所选函数/变量的Python代码。所有连续细节都会立即显示。当我关闭完成窗口时(例如,通过接受其中一个选项并再次要求完成),该过程重复进行。这让我很疯狂。

到目前为止我已经尝试过了:

  • 创建一个全新的工作区,
  • 从头开始创建Eclipse / PyDev项目
  • 调整JVM以确保它有大量内存,
  • 确保选择正确的JVM(最新的Oracle JVM),
  • 确保Python进程与Java实例自由通信(我读过可能存在的问题,但似乎不是问题)。
  • 确保所有已安装的插件都是最新的。

我使用的版本是Eclipse Helios,因为我上次检查某些扩展时尚未移植到最新版本。

有没有人观察过类似的问题?有人能绕过它吗?有关如何调试它并提交合理的错误报告的一般想法可能吗?其他值得检查的东西。

任何解决方法都不如完全关闭完成?

谢谢!

修改

我也注意到HTML / CSS编辑器中类似弹出窗口的问题。它看起来有点相似(一个黄色的窗口,里面有一些文字),它也需要很长时间才能显示出来。不知道这是否相关,但可能是。

修改(2):

好的,不,我已经开始全新安装最新的Eclipse Indigo,除了PyDev之外没有任何额外的插件,问题仍然存在。好像我必须寻找新的IDE。

3 个答案:

答案 0 :(得分:2)

您使用的是哪个版本的Java?

如果您使用的是Windows 7,则更高版本的Java(我认为6+)将默认为IPv6。 这可能会导致问题,因为Python可能需要IPv4。

无论如何,由于我遇到了这个问题,我尝试禁用

  • pylint的
  • 代码分析

但它仍然悬挂着。

Pal关于“ipv4利用率”的回答引发了我对“我更喜欢”IPv4解决的另一个问题的记忆。

请参阅http://docs.oracle.com/javase/1.4.2/docs/guide/net/ipv6_guide/

您要做的是编辑您的eclipse.ini并在vmargs部分添加“-Djava.net.preferIPv4Stack = true”

-startup
plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
...
-vmargs
-...
-Djava.net.preferIPv4Stack=true
...

我不再挂起。

答案 1 :(得分:0)

您是否有机会提供发生这种情况的代码(并将其添加到错误报告中,请参阅:http://pydev.org/about.html了解链接)?

我每天都在使用PyDev和一些非常大的项目并且没有这个问题,所以,它可能是你代码中的一些特定构造或场景 - 或者你可能只是给了Eclipse足够的内存(这将使垃圾收集器工作得更多),在这种情况下,请看一下:What are the best JVM settings for Eclipse?(具体来说,提高你的-Xmx标志,尽管你也可以使用其他提示)。

如果您无法提供可重现的方案,另一种选择是获取分析器(即:YourKit java分析器有15天免费,这在这种情况下会有所帮助),在分析器中运行该用例并传递了在这种情况下发生的事情的快照(如果是这种情况,请在pydev.org上打开一个错误报告,我可以帮助你)。

答案 2 :(得分:0)

我从pydev.org常见问题解答得到了这个,它对我来说很好。

当我完成代码完成时,PyDev会挂起,我该怎么办?

PyDev在java方面完成大部分工作,但是一些信息只能从python端获取(主要是内置),因此,为了获取该信息,PyDev创建了一个shell并通过套接字与它通信。

发生这种情况时的主要问题是:

  1. 阻止与shell的通信的防火墙

  2. 在Linux中,某些内核不允许使用ipv4,这可能会导致PyDev失败。

  3. 要启用它,请执行:echo 0>的/ proc / SYS /净/ IPV6 / bindv6only

    1. 连接超时太小。
    2. 这取决于代码完成首选项中的“连接shell的超时”(窗口>首选项> PyDev>代码完成)

      如果无效,请报告错误(同时,检查错误日志中是否有任何内容(窗口> show view> PDE Runtime>错误日志)和eclipse'.log',它位于在工作区位置的.metadata文件夹中。