今天发现emacs fork出了大量python子进程(500+),占用内存和进程号(kill掉之后内存使用减少了将近4G)。有没有人遇到过类似的情况?
使用的是emacs --daemon
模式,pyls
为在~/.emacs.d/.python-environments/default
下安装的python-language-server[all]
,初步判断是lsp-python
的问题,之前用elpy
从来没有出现这这种情况。
各种版本信息如下:
macOS 10.13.6
Emacs 26.1-2 (Homebrew Cask)
company-20180913.2311
company-jedi-20151217.321
company-lsp-20180917.2244
lsp-python-20180816.1314
lsp-ui-20181007.2219
pipenv-20180719.547
jedi-core-20170121.1410
修正:应该是jedi一直在后台fork subprocess。ps -elf
输出进程command为/path/to/jedi/evaluate/compiled/subprocess/__main__.py /path/to/site-packages 4
我用lsp-python 体验比较差,
经常会有冗余的旁侧信息跳出来干扰注意力.
我无法用virtual env, 不清楚怎么回事…
python, 我基本用spacemacs默认的anaconda, 刚刚够用, 也比较省心.
SGNH
2018 年10 月 19 日 03:45
4
我用的elpy 只要内存够jedi就无线fork 经常把电脑吃死了,现在用用就退从新进,要不内存永远不够
查到了一种解决方案,源于jedi@github#1242 ,可以在一定程度上缓解此问题,但是运行较长时间后还会产生几十个进程,不过比之前的数百要好很多了。
目前此issue仍为open状态,所以我参照里面的建议手动打了个patch:
# ~/.emacs.d/.python-environments/default/lib/python3.7/site-packages/jedi/api/environment.py
192a193
> var = os.environ.get('VIRTUAL_ENV')
194c195,196
< if environment.path != os.environ.get('VIRTUAL_ENV'):
---
> # if environment.path != os.environ.get('VIRTUAL_ENV'):
> if var and var != environment.path:
“冗余的旁侧信息”应该指的是lsp-ui-mode
吧,我用了一段时间之后也觉得太烦人,就把它关了。
songpeng:
经常会有冗余的旁侧信息跳出来干扰注意力.
(setq lsp-ui-sideline-enable nil)
1 个赞