Spyder: 添加或删除行时,Spyder 4.0.0的速度令人难以忍受

创建于 2019-12-09  ·  30评论  ·  资料来源: spyder-ide/spyder

问题描述

每当我在编辑器中添加(使用Enter)或删除(将快捷方式设置为Ctrl + D)时,Spyder的速度都非常慢。 每条线平均需要接近一秒钟的时间。 保持时,行命令将缓冲,然后将它们添加或删除的速度降低到每行大约两秒钟。

spyder --reset之后的相同问题。 还尝试切换自动完成。 自从beta / release候选版本以来,这种情况一直在发生,因此,我一直没有使用它。 Spyder现在对我来说无法使用。

什么步骤可以重现问题?

  1. 按Enter或Ctrl + D

什么是预期的输出? 你看到了什么呢?

我希望它不会像旧版本那样花很长时间。

版本号

  • Spyder版本:4.0.0
  • Python版本:3.7.5
  • Qt版本:5.9.6
  • PyQt版本:5.9.2
  • 操作系统名称/版本:Win 10

依存关系

cloudpickle> = 0.5.0:1.2.2(确定)
pygments> = 2.0:2.5.2(确定)
qtconsole> = 4.6.0:4.6.0(确定)
nbconvert> = 4.0:5.6.1(确定)
狮身人面像> = 0.6.6:2.2.2(确定)
pylint> = 0.25:2.4.4(确定)
psutil> = 0.3:5.6.7(确定)
qtawesome> = 0.5.7:0.6.0(确定)
qtpy> = 1.5.0:1.9.0(确定)
pickleshare> = 0.4:0.7.5(确定)
zmq> = 17:18.1.0(确定)
chardet> = 2.0.0:3.0.4(确定)
numpydoc> = 0.6.0:0.9.1(确定)
spyder_kernels> = 1.8.1; <2.0.0:1.8.1(确定)
qdarkstyle> = 2.7:2.7(确定)
atomicwrites> = 1.2.0:1.3.0(确定)
diff_match_patch> = 20181111:20181111(确定)
intervaltree:无(确定)
看门狗:无(确定)
密钥环:无(确定)
pexpect> = 4.4.0:4.7.0(确定)
pympler:无(确定)
sympy> = 0.7.3:1.4(确定)
cython> = 0.21:0.29.14(确定)
IPython> = 4.0:7.10.1(确定)
matplotlib> = 2.0.0:3.1.1(确定)
熊猫> = 0.13.1:0.25.3(确定)
numpy的> = 1.7:1.17.4(确定)
scipy> = 0.17.0:1.3.1(确定)
pyls> = 0.31.2; <0.32.0:0.31.2(确定)
rtree> = 0.8.3:0.8.3(确定)

Editor Bug

最有用的评论

@bcolsen除了仅更新当前文件外,如果轮廓浏览器甚至不可见,它也不应更新(正如我的测试确认的那样)。

所有30条评论

@gabrielclow ,您的描述还不够。 请发表:

  1. 您正在编辑哪种文件(Python或其他文件)?
  2. 您的档案有几行?
  3. 您是否启用了“缩进指南”之类的功能?

最后,请发布视频(带有Licecap的gif动画)问题,以查看您确切指的是什么。

@gabrielclow ,您的描述还不够。 请发表:

  1. 您正在编辑哪种文件(Python或其他文件)?
  2. 您的档案有几行?
  3. 您是否启用了“缩进指南”之类的功能?

最后,请发布视频(带有Licecap的gif动画)问题,以查看您确切指的是什么。

  1. 我只编辑.py文件
  2. 看起来不取决于行数。 大小为50行的小文件发生在5k行的大文件中。
  3. 我只使用自动完成功能(在屏幕截图中配置)。 其余的功能均已关闭(不掉线,不代码风格掉线,docstring掉线,缩进指南)。 我没有其他语言设置,我也尝试过打开和关闭Kite。

autocomplete

在gif中,我按住Enter键,等待新行创建,然后按住Ctrl + Z删除它们(与Ctrl + D效果相同,所以我猜想它也与捷径)。 然后,Spyder停止并非常缓慢地添加或删除行,而不是平稳进行:

stopwatch

更新:显然,如果我关闭一些文件,则速度变慢的可能性不大!
更新2 :同样,减速的速度显然与打开文件的数量+每个文件中的行数有关,但是无论当前选择的是什么,它都会发生。 如果我只保留一些较小的文件,然后关闭其余文件,那会更顺畅
更新3 :如果我按住时间太长或按得太快,Spyder甚至可能会挂一会儿

另外,减速的速度显然与打开文件的数量有关

看到最慢的速度时,您打开了多少文件?

另外,减速的速度显然与打开文件的数量有关

看到最慢的速度时,您打开了多少文件?

我通常会打开6-8个文件。 通常它们中的大约两个较大(4k-5k行),其余的是较小的文件,具有100-500行。

@ CAM-Gerlach,您以前看过类似的东西吗?

如果我对此发表评论,我也会遇到相同的问题,实际上这使我卸载了Spyder 4,然后回到Spyder 3.3.6。
我只启用了在Spyder 3中也启用的设置,因此需要进行PEP8检查。 代码完成和详细信息已启用; 但不检查文档字符串; 代码段; 悬停说明; 风筝; 等等
减速效果如@gabrielclow的GIF中所示,尽管有时插入一行仅需要2秒钟。

当我构建大型程序包时,同时打开30-50个Python文件对我来说并不罕见,其中一些文件可以轻松地包含超过3k行代码(当我注意到速度缓慢时,我已经打开了这些文件)。
由于大多数时候我同时使用3个监视器来编辑脚本,因此最多可以容纳8个面板,而且我需要经常在文件之间切换,因此关闭这些文件中的大多数对我来说不起作用。

我个人认为,造成这种速度下降的主要原因是,每当修改打开的文件时,都需要更新/运行许多数据库和脚本。

每当修改文件时,是否有一个脚本在所有打开的文件的所有行上运行?
这将解释为什么减速似乎与所有打开的文件中的总行数成比例,以及为什么它似乎与正在编辑的文件无关。

我可以确认这个错误。 在我的计算机上还算不错(直到现在还没有真正注意到),但是添加/删除行比添加文本要慢得多。 如果按住该键,输入问题确实很明显。

@bcolsen ,我们如何复制它?

打开大约40个文件,它的速度似乎还不错。 看起来在docdidchange中可能正在检查所有文件,而不仅仅是活动文件。 也许是大纲。

据我所知, @ ccordoba12的行为基本上与#8864相同,并且只要启用缩进指南,只要打开mainwindow.py就可以肯定我可以使用Spyder 4 final上的干净设置来进行复制。分割窗格会使延迟增加一倍或更多。 删除行与我测试的其他内容具有相同的主要延迟(完全如此处所述;在中等性能的计算机上具有〜1s的延迟和〜1s的重复延迟,并且与文件长度和打开的分割窗格的数量成比例地缩放)在那里(移动的行,重复的行等),我可以确认它仍然在Spyder 4 final上发生,仅使用临时文件,并且使用干净的设置打开mainwindow.py

但是,我认为缩进指南默认情况下未启用,并且实际上在重置首选项后它们似乎没有启用,但是我似乎无法通过任何其他设置来复制接近此延迟的任何地方(实时代码分析,OTF完成,下划线错误和警告,显示空白等); 尽管启用了所有功能,但保存缩进指南确实滞后了一段时间。

每当修改文件时,是否有一个脚本在所有打开的文件的所有行上运行?

LSP被调用,我最初虽然是它,但是基于其在拆分窗格,特定显示项目而不是其他项目等方面的行为。我认为它可能与重绘相关(绘制整个文件而不是仅绘制可见文件)区域等)。 但这远高于我的薪水等级。

据我所知, @ ccordoba12的行为基本上与#8864相同,并且只要启用缩进指南,只要打开mainwindow.py就可以肯定我可以使用Spyder 4 final上的干净设置来进行复制。分割窗格会使延迟增加一倍或更多。

如果同时启用缩进指南,同时打开50个文件和8个分割的窗格(这就是我通常编辑文件的方式),则每行新行的延迟会增加到6至10秒之间。
我使用的计算机是高端游戏台式机,因此并不是因为计算机的功能强大。

@dalthviz和我尝试未成功复制#8864。 不好意思,但是直到我们能够复制它,我们对此无能为力。

打开大约40个文件,它的速度似乎还不错。 看起来在docdidchange中可能正在检查所有文件,而不仅仅是活动文件。 也许是大纲。

好的,这是一个好的开始。 我们将检查这个。

@ ccordoba12我已经弄清楚了这种滞后的根源,实际上这似乎是我讨论了一段时间的Spyder 4 vs. Spyder 3中感受到的主要“基准”滞后:正如@bcolsen所建议的那样的确是大纲窗格,尽管实际上无论该窗格是打开还是关闭,它都会发生。 在低端计算机上,实际上只有打开temp.pymainwindow.py看到(尽管差得远不算坏),没有启用任何其他功能,也没有打开大纲窗格。 以下是从干净设置进行复制的方法:

  1. 打开mainwindow.py和一个拆分的编辑器面板,然后将右侧面板设置为temp.py,将左侧面板设置为mainwindow。
  2. 按住左面板(主窗口)中的删除/复制/移动行,撤消/重做等。 很小但明显的滞后是显而易见的。
  3. 打开“大纲”窗格(默认情况下处于隐藏状态)。 这是由于一个小但有用的明显错误,它使大纲窗格中显示的文件与焦点所在的文件不同步,这是因为该文件切换为在打开时显示在最右边的拆分面板中,而不是在打开时处于活动的拆分面板中。 /未隐藏。
  4. 重试在主窗口中删除/ etc /行。 几乎没有滞后,重复率更高(在性能较低的机器上可能会更明显)
  5. 单击右侧面板(temp.py),然后返回左侧面板(主窗口),以使大纲浏览器正确显示左侧面板的轮廓。
  6. 重试删除/等,然后滞后返回,与步骤2中的相同(当轮廓浏览器完全不可见时)

为了用很多文件进行测试,我在spyder目录中搜索了import os ,在拆分面板视图中打开了前40-50个文件(较少的较大文件应产生相同的效果)并重复执行步骤2-6以上。 即使在一个短文件上,在步骤2和6中删除行时,滞后量也要大得多(类似于Mainwindow上的缩进指南级别)(隐藏了行外浏览器,并显示在活动文件中),而实际上没有滞后(好像没有打开任何文件,或Spyder 3级)在第4步(概述浏览器已打开并与活动文件不同步)。

同时,无论是否打开文件数量,两次都启用缩进指南,删除/等行非常慢,并且所产生的滞后似乎仅受当前文件长度的修改和显示的分割窗格数的影响很大。文件。

  1. 打开“大纲”窗格(默认情况下处于隐藏状态)。 这是由于一个小但有用的明显错误,它使大纲窗格中显示的文件与焦点所在的文件不同步,这是因为该文件切换为在打开时显示在最右边的拆分面板中,而不是在打开时处于活动的拆分面板中。 /未隐藏。

这确实听起来确实像我正在体验的内容,但是只是增加了另一个细节:我在另一个显示器上使用一个单独的编辑器窗口,并且每次启动时都关闭Spyder上的编辑器窗格。 因此,如果相关,我仍然会在没有任何拆分窗格的单个编辑器窗口中遇到此错误。 缩进指南也需要更长的时间。

我希望您能找到答案,并且很快得到解决,因此我可以在4.0.0中使用出色的黑暗模式

我可以确认,每次添加或删除行时,大纲视图程序都会更新所有打开的文件。 这导致行删除/添加的时间增加,该时间随着打开的文件数而增加。 我在上面的PR中做了一个简单的“修复”,似乎可以解决许多打开文件的问题。 @ impact27有什么想法吗?

一个单独但明显相关的问题是大文件(> 2000行)随着行更改的更新速度也很慢。 当前打开4个或5个这些大文件会使update_all make的运行变得更慢。 使用上面的补丁,@ CAM-Gerlach上面描述的问题仍然会在大文件上发生,但是小文件应该总是很快。

一个单独但明显相关的问题是大文件(> 2000行)随着行更改的更新速度也很慢。 当前打开4个或5个这些大文件会使update_all make的运行变得更慢。 使用上面的补丁,@ CAM-Gerlach上面描述的问题仍然会在大文件上发生,但是小文件应该总是很快。

似乎我们需要将UI阻止过程移至线程。

似乎我们需要将UI阻止过程移至线程。

这样最好。 我认为这与语法高亮显示有关。

我认为这与语法高亮显示有关。

是的,这是一个问题,因为Qt的语法荧光笔基础结构在主线程上运行:-\

@bcolsen除了仅更新当前文件外,如果轮廓浏览器甚至不可见,它也不应更新(正如我的测试确认的那样)。

我有同样的问题。
Spyder变得极其缓慢。
我希望是否有需要更新的软件包。

@NaderNazemi正如您从问题中看到的那样,我们已经进行了全面的测试,

我看到它已修复,但是在我的4.1.4版本(可能那里有较新的版本)中,当关闭Kite自动完成应用程序时会发生问题。

@DGuidi ,谢谢您告诉我们。 仅供参考,Spyder 4.1.5于几周前发布,进行了一些较小的进一步改进,并进行了一些较大的更改,希望在滚动,键入和使用实时代码分析/缩进指南/等时提高编辑器的性能。 已针对下一个版本实施或正在测试中。 如果您喜欢冒险,可以尝试#13864看看它是否对您有所改善,这真的很有帮助。 我也会很快对其进行测试。

至于风筝,我没有使用它和它的第三方专有插件,但是听起来您已经隔离了一个特定的案例,它的速度很慢,这确实有助于解决它,所以希望他们的开发人员之一或有人否则,那么就可以弄清楚发生了什么。 祝你好运!

@ CAM-Gerlach等等,只是为了添加一些信息,我使用的是来自https://winpython.github.io/的WinPython64-3.8.5.0cod,所以问题可能出在此软件包中还是在我的Windows中?机。
至少在winpython更新之前,我很难升级spyder版本:我无法在我的机器上安装软件。

禁用风筝补全和后备补全对我不起作用:(

Screenshot_362

@stonebig您可能对此一无所知吗?

目前,您可以尝试禁用Source菜单, Preferences > EditorPreferences > Completion and Introspection不需要的任何选项,尤其是缩进的指南,这可能会导致严重的延迟。 除此之外,我们已经为Spyder 4.2.0准备了许多修复程序或正在对它们进行最终测试,这些修复程序将在接下来的几周内发布,目的是提高编辑器的性能并解决大多数变慢的原因,尤其是对于较大的文件,但是,如果无法测试它们以确认它们可以为您带来改善,对不起,我不确定要推荐什么。

@ CAM-Gerlach,您好,95%的时间Windows死机很慢,这与防病毒活动或内存饱和有关。

另外,Spyder可选插件可能无法改善这种情况

好的谢谢。 希望4.2.0能够解决或至少大大改善@DGuidi的情况

此页面是否有帮助?
2 / 5 - 1 等级