Djangos Dev-Server verursacht mit Python 3 eine dauerhaft hohe CPU-Last

1799
Simon Steinberger

Der Entwicklungsserver von Django läuft unter Python 2.7.5 (unter Windows 7) mit einer ziemlich konstanten (Leerlauf-) Last von etwa 1-3% auf meinem Testsystem - es werden keine Seiten geladen oder andere Berechnungen ausgeführt. Beim Umschalten auf Python 3.4.2 steigt die konstante Last auf durchschnittlich etwa 10%. Das ist ziemlich groß für nichts zu tun ... Gibt es eine Erklärung dafür? Kann es vermieden werden? Ich habe das mit verschiedenen Django-Apps getestet.

2

1 Antwort auf die Frage

2
Simon Steinberger

Um meine eigene Frage zu beantworten: Der Dev-Server von Django überprüft regelmäßig alle Python-Quelldateien auf Änderungen. Durch die Einstellung der Option --noreload wird dieser automatische Neustartmechanismus verhindert, wodurch auch die Leerlauflast auf null reduziert wird. Anscheinend ist das automatische Neuladen von Python 3 weniger effizient. Die Verwendung von pyinotiy ist eine Lösung für Linux, um diesen Overhead zu verhindern: https://docs.djangoproject.com/en/1.7/ref/django-admin/#runserver-port-or-address-port

Ich wollte nur dazu beitragen, dass dies auch das hohe CPU-Problem für mich verursacht. Wie Simon sagte, das Hinzufügen von "--noreload" zum "runserver" -Befehl löste das Problem. Sieht aus, als wäre das automatische Nachladen in Django unglaublich verschwenderisch. Selbst wenn keine .py -Datei berührt oder modifiziert wird, werden sie ständig neu geladen, was zu sehr hohen CPU- und E / A-Auslastungen führt. flatterino vor 6 Jahren 1