PyCharm 3.1在索引期间永久挂起并且无法使用

oro*_*ome 11 python regex crash pycharm

在更新到3.1之后,PyCharm在包的"索引"期间永远挂起(在OSX 10.9.1,Python 2.7.5上).

对我来说,这是在索引时发生的scipy(0.13.3).如果我unistall scipy,索引似乎完成,但然后再次挂起"pythonstubs".用户界面变得反应迟钝,CPU使用率最高,我无法做任何事情,不得不强制退出应用程序.

如果我重新安装scipy,PyCharm会再次在scipy扫描中的相同位置挂起(请参阅对话框的屏幕截图):

在此输入图像描述

FWIW,我可以从系统命令行运行Python脚本(包括一些使用scipy和最近更新或安装的许多其他软件包)没有问题,因此Python安装是合理的.

有没有人有类似的问题或找到解决这个问题的方法?

oro*_*ome 5

问题在于可能已定义用于标识TODO项目的任何正则表达式匹配.PyCharm用于匹配这些项的Java标准正则表达式库使用指数复杂度的算法来搜索'*.a'和类似的模式.

从理论上讲,可以非常快速地匹配任何正则表达式(存在线性算法),但是许多regexp库的开发人员根本不打算实现它.

Python re模块存在同样的问题:

>>> from timeit import timeit
>>> timeit("import re; list(re.finditer('.*a', 'foo' * 10000))", number=1)
0.6927990913391113
>>> timeit("import re; list(re.finditer('.*a', 'foo' * 50000))", number=1)
17.076900005340576
Run Code Online (Sandbox Code Playgroud)

一般情况下,如果索引花费很长时间或挂起,请查看TODO项目中的RegEx,看看是否可以缩小匹配范围以提高性能.

  • 这听起来很有希望.你有机会解释如何做这个部分的机制:"在你的TODO项目中查看RegEx,看看你是否可以缩小范围"? (5认同)