为什么 vscode 对 Python 的语法解析这么慢

274 天前
 uni

语法解析慢指的是从打开一个 python 项目到 vscode 能够识别出里面的 py 文件里的语法,然后给这个文件着色(比如类着上绿色,关键字着上粉紫色,函数着上黄色,变量着上淡蓝色)的时间很长,我打开一个大型的 py 项目,这个着色时间要花一分钟以上,换用 ruff 也没有太大改善

对比于我打开一个大型 typescript 项目,这个着色时间一般都不超过十秒,py 和 ts 差异这么大让我很费解

4413 次点击
所在节点    Visual Studio Code
31 条回复
Elliota
274 天前
为什么要用 vscode 写 Python ?
Trim21
274 天前
ruff 不负责分析语法,你换 ruff 肯定没用…
kneo
274 天前
不明白为什么要一分钟。正常来说不应该是一秒吗?
NoOneNoBody
274 天前
python 是层层依赖,项目大(主要是依赖多)的话确实分析很耗时
我项目不大,但依赖很多,也很耗时,就因为这个原因转 sublime+pyright 了
stimw
274 天前
能发个很慢的样例仓库吗

话说一楼怎么不能用 vscode 写 Python ,我现在 ts rust go python 都用 vscode...除了 c/c++用 clion 体验好
GeekGao
274 天前
没感觉,结合 venv 加载 4w 行代码在 ubuntu 上没啥问题
wolfan
274 天前
有没有可能是你的插件有问题,或者你的内存不足够用,有些 vscode 的插件吃内存的很,尤其是解析插件。
0attocs
273 天前
看看 language server 是不是 pylance 。跟 ruff 没关系,ruff 只是一个简单的 linter 。
jjx
273 天前
你一个文件几十万行?

我 16 万行的项目打开都是 1-2 秒
bianhui
273 天前
电脑不行,或者乱七八糟插件装多了吧。我是秒识别。是不是你前台开的页签太多了,vscode 只会识别打开的页签
jstony
273 天前
1. 看看你的插件
2. 看看你的 language server
3. vs code 本身其实只是一个壳
Vegetable
273 天前
vscode 的 python highlight 根本不走 lsp 和任何插件,是 vscode 内置的,如果你这方面有问题,更可能是有某些插件提前卡死了 vscode 。
不如好好研究一下是什么卡住了,startup performance 看一下什么插件在工作
Vegetable
273 天前
vscode 内置了一个扩展二等分功能,Start Extension Bisect ,原理是使用二分法自动禁用扩展,帮助你找到有问题的扩展,你可以先执行一遍这个流程。
uni
273 天前
跟 python 相关的插件只有 python ,python-debugger ,pylance ,jupyter ,ruff

谢谢楼上的各位,我仔细思考了一下原因,我觉得主要原因可能是我这个项目是十几个 flask 微服务组成的 vscode 的 workspace ,相当于是十几个项目了。我拿秒表计时了一下,从打开到语法解析完成的时间是 40 秒,之前说一分钟可能是体感慢的原因,有点夸张了。40 秒也是一个挺长的时间,是因为语法解析要把这十几个项目全部过一遍才给语法解析?

我随便找了个项目,比如说这个: https://github.com/ethereum/web3.py ,我从打开到语法解析完成大概花十秒,这个速度正常吗?
yph007595
273 天前
@uni #14 “从打开到语法解析完成”,是从哪里看的? vscode> file > open folder? 怎么确定是语法解析完?
yph007595
273 天前
@uni #14 “从打开到语法解析完成”,是从哪里看的? vscode - file - open folder? 怎么确定是语法解析完?
cc666
273 天前
@uni #14 什么是语法解析完? 刚测试第一次打开几乎是瞬间着色,
uni
273 天前
@yph007595 #15 随便打开一个文件,highlight 完成(比如类着上绿色,关键字着上粉紫色,函数着上黄色,变量着上淡蓝色)
uni
273 天前
@cc666 代码文件里面的所有单词都完成着色吗?没有一个单词是白色的哦?
yph007595
273 天前
@uni #18 那肯定是你 vscode 有问题了,我打开都是一瞬间就着色完成,快到看不到有白色的单词。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1017367

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX