Django 的开发服务器使用 Python 3 导致 CPU 永久负载高

Sim*_*ger 5 performance python python3 cpu-load

Django 的开发服务器在 Python 2.7.5(在 Windows 7 上)下运行,在我的测试系统上具有大约 1-3% 的恒定(空闲)负载 - 没有页面加载或其他计算完成。切换到 Python 3.4.2 会导致恒定负载上升到平均约 10%。这对于什么都不做来说是非常巨大的......有什么解释吗?可以避免吗?我用各种 Django 应用程序对此进行了测试。

Sim*_*ger 5

回答我自己的问题:Django 的开发服务器会定期检查所有 Python 源文件的更改。设置选项 --noreload 可以防止这种自动重启机制,这也将空闲负载减少到零。显然,Python 3 上的自动重新加载效率较低。使用 pyinotiy 是 Linux 也可以防止这种开销的解决方案:https ://docs.djangoproject.com/en/1.7/ref/django-admin/#runserver-port-or-address-port

  • 只是想贡献一下,这也是导致我高 CPU 问题的原因。就像 Simon 所说的,在 `runserver` 命令中添加 `--noreload` 就解决了这个问题。看起来 Django 中的自动重新加载非常浪费;即使不接触或修改任何 `.py` 文件,它们也会不断重新加载,导致 CPU 和 I/O 负载非常高。 (2认同)