uni

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

  •  
  •   uni · Feb 21, 2024 · 7447 views
    This topic created in 986 days ago, the information mentioned may be changed or developed.

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

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

    Supplement 1  ·  Feb 22, 2024
    跟 python 相关的插件只有 python ,python-debugger ,pylance ,jupyter ,ruff

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

    我随便找了个项目,比如说这个: https://github.com/ethereum/web3.py ,我从打开到语法解析完成大概花十秒,这个速度正常吗?
    31 replies  •  2024-02-23 10:22:25 +08:00
    Elliota
    Elliota
    Feb 21, 2024
    1
    为什么要用 vscode 写 Python ?
    Trim21
    Trim21
    Feb 21, 2024 via Android❤️1
    2
    ruff 不负责分析语法,你换 ruff 肯定没用…
    kneo
    kneo
    Feb 22, 2024 via Android
    3
    不明白为什么要一分钟。正常来说不应该是一秒吗?
    NoOneNoBody
    NoOneNoBody
    Feb 22, 2024
    4
    python 是层层依赖,项目大(主要是依赖多)的话确实分析很耗时
    我项目不大,但依赖很多,也很耗时,就因为这个原因转 sublime+pyright 了
    stimw
    stimw
    Feb 22, 2024 via Android❤️1
    5
    能发个很慢的样例仓库吗

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

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

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

    我随便找了个项目,比如说这个: https://github.com/ethereum/web3.py ,我从打开到语法解析完成大概花十秒,这个速度正常吗?
    arthurblake
    arthurblake
    Feb 22, 2024
    15
    @uni #14 “从打开到语法解析完成”,是从哪里看的? vscode> file > open folder? 怎么确定是语法解析完?
    arthurblake
    arthurblake
    Feb 22, 2024
    16
    @uni #14 “从打开到语法解析完成”,是从哪里看的? vscode - file - open folder? 怎么确定是语法解析完?
    cc666
    cc666
    Feb 22, 2024
    17
    @uni #14 什么是语法解析完? 刚测试第一次打开几乎是瞬间着色,
    uni
    uni
    OP
    Feb 22, 2024
    18
    @yph007595 #15 随便打开一个文件,highlight 完成(比如类着上绿色,关键字着上粉紫色,函数着上黄色,变量着上淡蓝色)
    uni
    uni
    OP
    Feb 22, 2024
    19
    @cc666 代码文件里面的所有单词都完成着色吗?没有一个单词是白色的哦?
    arthurblake
    arthurblake
    Feb 22, 2024
    20
    @uni #18 那肯定是你 vscode 有问题了,我打开都是一瞬间就着色完成,快到看不到有白色的单词。
    xctcc
    xctcc
    Feb 22, 2024
    21
    用 geek uninstaller 卸载重装一下
    Jimmyisme
    Jimmyisme
    Feb 22, 2024
    22
    @uni #14 同样是瞬间解析,甚至是 WSL 下的
    supergeek1
    supergeek1
    Feb 22, 2024
    23
    我用 vsc 同时开几个几万行的 python 项目也就是几秒加载完,倒是 pycharm 会特别慢,好几分钟那种
    tedding
    tedding
    Feb 22, 2024
    24
    你尝试在 github 项目主页 敲一下 " . " 用在线版本的看一下。。。从 clone 开始也就 10 多秒吧
    xarthur
    xarthur
    Feb 22, 2024
    25
    如果我没记错的话 VSCode 的语法高亮的功能是由 LSP 提供的( LSP 提供哪些是类、函数、变量之类的信息),所以一旦项目文件多了,就非常受限于 LSP 的性能。
    顺便这里谴责微软不开源 pylance
    xarthur
    xarthur
    Feb 22, 2024
    26
    不过我测试了一下 OP 说的项目,应该都是打开即高亮,应该出现这么慢的情况。
    futuretech6
    futuretech6
    Feb 22, 2024
    27
    可以试一下 pyright ,pylance 就是基于 pyright 再包一层的
    runstone
    runstone
    Feb 22, 2024
    28
    试验了一下,基本秒着色 web3.py 。。。
    talkischeap567
    talkischeap567
    Feb 22, 2024
    29
    不懂就问 vscode 写啥快?
    lisongeee
    lisongeee
    Feb 22, 2024
    30
    vscode 的语法高亮基于 https://github.com/MagicStack/MagicPython

    貌似是基于特定结构的正则表达式去实现的
    hailaz
    hailaz
    Feb 23, 2024
    31
    大家都好像忽略了硬件差距,应该同时观察一下启动时的 CPU 和内存和硬盘的占用情况。
    例如硬盘,固态和机械在小文件读取的差距还是蛮大的,固态和固态之间的差距有时也很大。
    工作空间中的文件越多,对速度的影响也会越大(我写 go 的时候就能明显感觉到)
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5338 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 74ms · UTC 01:29 · PVG 09:29 · LAX 17:29 · JFK 20:29
    ♥ Do have faith in what you're doing.