在更新到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安装是合理的.
有没有人有类似的问题或找到解决这个问题的方法?
问题在于可能已定义用于标识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
一般情况下,如果索引花费很长时间或挂起,请查看TODO项目中的RegEx,看看是否可以缩小匹配范围以提高性能.