Ich habe ein relativ einfaches (keine Klassen) Python 2.7 Programm. Das erste, was das Programm macht, liest eine SQLite-Datenbank in ein Wörterbuch ein. Die Datenbank ist groß, aber nicht riesig, etwa 90 Megabyte auf der Festplatte. Das Einlesen dauert etwa 20 Sekunden. Nach dem Einlesen der Datenbank initialisiere ich einige Variablen, z. B.
%Vor%Wenn ich dieses Programm in Eclipse-3.7.0 / pydev debuggere - sogar diese einfachen Zeilen -, verschlingt jeder einzelne Schritt im Debugger 100% eines Kerns und dauert zwischen 5 und 10 Sekunden. Ich kann sehen, dass der Python-Prozess für 10 Sekunden auf 100% CPU geht. Single-Step ... warten Sie 10 Sekunden ... Single-Step ... warten Sie 10 Sekunden ... Wenn ich debug in der Befehlszeile nur mit pdb, keine Probleme. Wenn ich überhaupt nicht debugge, läuft das Programm mit "normaler" Geschwindigkeit, nichts Seltsames wie in Eclipse.
Ich habe dies auf einem Dual-Core-Win7-PC mit 4G-Speicher, meiner 8-Core-Ubuntu-Box mit 8G Speicher und sogar meinem Mac Air reproduziert. Wie ist das für Multi-Plattform-Entwicklung! Ich dachte immer, es würde irgendwo funktionieren . Ich bin nie in der Nähe, zu jeder Zeit aus dem Speicher zu gehen.
Warum springt der Python-Prozess bei jedem Eclipse-Einzelschritt zu 100% CPU und dauert 10 Sekunden?
Hier ist ein guter Workaround, basierend auf Mikko Ohtamaas Hinweis. Ich habe gerade Folgendes auf meinem Mac Air verifiziert:
Die Problemumgehung für mich besteht also darin, das Eclipse-Variablenfenster zu schließen und das Expressions-Fenster zum selektiven Anzeigen von Variablen zu verwenden. Ein Schmerz, aber für das Debugging mache ich es besser als pdb.
Tags und Links python eclipse performance usability pydev