mypy slow when using vscode's python extension

Question:

When enabling mypy in vscode ("python.linting.mypyEnabled": true,),
then any manual mypy commands become very slow and CPU intensive (10s before vs 3min after).

It seems like the two mypy processes should be independent, or even aid each other through a cache, but they seem to be in each other’s way.

I noticed that from a clean venv it doesn’t happen for a while. Only after the vscode has run mypy do the manual mypy commands become slow, even when vscode is not running anymore.

The only related question I could find was this.

Asked By: JBSnorro

||

Answers:

I found that making vscode use a different cache directory resolves the problem. Consider adding e.g. the following to your settings.json:

"python.linting.mypyArgs": [
    "--cache-dir=.mypy_cache/.vscode"
],

Bonus: by remaining within the default directory (mypy_cache), the second cache directory is ignored by git.

Answered By: JBSnorro

I used to have problems with slow and memory consuming mypy too. I have a guess that it may be because VSCode is trying to index a rather large mypy_cache. I added the cache to the settings in the "files.exclude" and "python.linting.ignorePatterns" sections and it got better. It’s also useful to add any other caches you have to these sections: pycache, pytest_cache, etc

Answered By: pipeknight