mspyls 内存占用高,启动时 cpu 占用高而且时间较长

大家是什么情况?感觉每次启动都要等好一阵 cpu 持续 90% 以上,启动以后内存占用挺高。

操作系统:linux mint (Ubuntu 18.04) emacs 26.3 lsp:mspyls

打开 lsp log 看一下,是不是在扫描 ~ 目录。

1 个赞

没错,是在扫描,扫描完就好了,但是内存占用还是高。每次打开项目都要扫描这么久吗?好像 vscode 上会快一些。

lsp-mode定义了一个workspace root, 工作时会扫描这个文件夹。运行lsp-workspace-folders-remove命令去除~目录就可以了!

1 个赞

我司的repo里有python和c++,都用bazel build and test。因为bazel会在root生成一些symlink,感觉msplys并没有把它们ignore掉,即使把那些symlink加到lsp-ignore-paths(大概这个名字)里,还是会去index。

可能你的repo也有类似的情况。我之前的解决方案是把自己工作的子目录变成project root。后面换到pyls了。。。

1 个赞

稍微有点麻烦,而且我不太希望把 sub directory 当做 project root,因为我有时会同时打开几个项目,不想把自己搞晕。

启动时间倒还好,但是内存占用真的有点高了,开几个项目的时候 16G 内存分分钟被占满。pyls 好一些是吗?速度和资源占用不能两全?请 @seagle0128 聊一下看法?

vscode 不知道会不会有这些问题,我猜应该是一样的?

~ 加入 lsp-session-folders-blacklist 试试。

1 个赞

貌似没有这个变量

lsp-session-folders-blacklist 是一个方法,返回的是 lsp-sessionfolders-blacklist 字段:

(lsp-session-folders-blacklist (lsp-session))
;; => ("/Users/..." ...)
1 个赞

原来是这样!我还以为是变量 :joy:

我试一下

看我退出 emacs 和退出之前比内存占用猛跌(中间蓝色的是内存)

image

10G 的内存占用,谁能想到 emacs 能比 pycharm 还占资源 :sweat_smile:

1 个赞

不知道你的项目有多大。如 @twlz0ne 所说, 不需要的 folder可以排除掉。理论上讲,设置相同的情况VSC 的内存占用应该没有区别。准确的说,这都是 server 占用的,跟编辑器本身无关。关于 pyls,我的使用经验看会占用更多的内存并且更慢。mypyls 是用 C#实现的,并发性能会好很多;pyls 是 Python 实现的,兼容性不错,性能就差多了。

1 个赞

同意是 server 造成的,但是对于把 emacs 当 IDE 的人来说,不会管那么多,直观就是 emacs 作为 IDE 来使用可能比 pycharm 更吃资源。

vscode python plugin默认用的不是mspyls,得disable jedi,然后才会用mspyls,其实感觉mspyls还处于测试阶段,还有很多bug

1 个赞

准备滚回 anaconda-mode 了,暂时没看到用 mspyls/pyls 有什么明显的收益

anaconda-mode也是用的jedi,跟Plys一样,区别不大

mspyls每次打开文件都卡几卡,而pyls每次编辑文件隔一会都卡几卡。

所以,你必须在这两种卡之中做出选择。。