Pycharm Django调试非常缓慢

19

我有一个中等大小的网站,但当我启动Runserver并准备运行应用程序时,需要大约30秒钟的时间。如果我选择“运行”应用程序而不是“调试”,启动时间只需要约3秒钟。

有哪些方法可以加快代码更改和调试周期呢? 我使用一台配置不错的MBP,拥有16GB的RAM。因此硬件不是问题。

我已将/media文件从项目中排除。 我没有其他大量文件会导致索引问题 我同时使用Postgres和Mongo db。 我正在运行Django 1.7 + 十多个类似的软件包:

dj-static==0.0.6
django-annoying==0.8.1
django-appconf==1.0.1
django-bootstrap-form==3.2
django-bootstrap-pagination==1.5.1
django-compressor==1.5
django-extensions==1.5.5
django-filter==0.10.0                              
django-guardian==1.2.5
django-storages-redux==1.2.3
django-widget-tweaks==1.3
djangorestframework==3.1.2                        
django-jinja==1.4.1

这是调试输出:

/Users/user1/.virtualenvs/env-test/bin/python "/Applications/PyCharm 4.5 EAP.app/Contents/helpers/pydev/pydevd.py" --multiproc --save-signatures --client 127.0.0.1 --port 64097 --file /Users/user1/gitroot/website1/manage.py runserver 0.0.0.0:8000 --verbosity 2
Connected to pydev debugger (build 141.1245)
pydev debugger: process 63926 is connecting

pydev debugger: process 63954 is connecting

Performing system checks...

System check identified no issues (0 silenced).
You have unapplied migrations; your app may not work properly until they are applied.
Run 'python manage.py migrate' to apply them.
June 03, 2015 - 09:08:52
Django version 1.7.7, using settings 'myproject.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.

更新: 自此帖发布以来,Pycharm已经具备了使用Cython作为解释器的功能。我认为这在一定程度上改善了事情。我还转而使用Runserverplus,我认为它运行更快。

4个回答

7
很遗憾,调试器本身就很慢,你几乎无法对此做什么。除非你必须要用它(例如你正在解决一个特别棘手的 bug),否则最好不要使用调试器。
我只能想到一件事可能会加快 PyCharm 调试器的速度,那就是关闭 "收集代码提示的运行时类型信息" (位于 文件 > 设置 > 构建、执行、部署 > Python 调试器)。

2
真的很痛苦,因为没有解决方案。在Jetbrain的问题跟踪中还有一些票:PY-10031PY-10427,但没有更多的提示。 - linqu
2
因为鼓励人们不使用调试器对于生产力和成功是有害的,所以请勿点踩。如果无法轻松调试,则应进行一些更改。 - pfrank
@pfrank 但是为什么你要责怪我现在的情况呢?我并不在JetBrains工作。 - Spc_555
调试器通常不会很慢,对于一个新项目,您可以快速连接到进程并使用调试器。如果有延迟,那么应该是某个人需要调查的异常情况,而不是正常情况。 - pfrank

4
对于我来说,当我记得我已经启用了调试器以收集类型信息时,问题得到了改善。
  • 按下Ctrl-Shift-A或在设置 > 构建、执行、部署 > Python调试器下搜索collect run-time types information for code insight

  • 取消勾选该框并点击应用

  • 看看这是否有帮助

我运行的是PyCharm Community 5.0.1

哇,禁用这个功能后,我的等待时间从30秒降至0.3秒!这个PyCharm的特性应该附带警告。 - ChaimG

1
我注意到原帖的调试输出中没有包含有关Cython的消息。我来到这篇文章是因为我无法弄清楚为什么我的PyCharm调试如此缓慢,但后来我意识到加速调试器的建议就在我的调试输出中。
"<some-path-to-python>/python" "/Applications/PyCharm.app/Contents/helpers/pydev/setup_cython.py" build_ext --inplace

我希望大家都尝试过了。我猜这个答案是给那些不输出阅读者的世界准备的。


1

需要对以下内容进行实验,这些内容来自于Jetbrain博客:

  1. 删除所有断点
  2. 关闭跟踪异常
  3. 无运行时类型洞察

但是还要考虑禁用Django模型检查等以加快速度。

我使用了一个补丁来加速测试用例,运行速度提高了10倍。因此,如果您进行TDD,函数比视图更轻便。它可以让您快速解决错误。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接