Warum ist das Debuggen in Eclipse / Pydev für mein Python-Programm so langsam?

8

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?

    
Ronopolis 01.08.2011, 01:46
quelle

2 Antworten

7

Hier ist ein guter Workaround, basierend auf Mikko Ohtamaas Hinweis. Ich habe gerade Folgendes auf meinem Mac Air verifiziert:

  • Wenn ich einfach das Fenster 'Variablen' in der Eclipse-GUI schließe, kann ich den Code mit normaler Geschwindigkeit durchgehen. Was großartig ist, aber, uh, ich habe kein Variablenfenster.
  • Für jede Variable, die ich sehen möchte, kann ich den Mauszeiger über die Variable bewegen und den Wert sehen. Ich habe nicht versucht, über mein großes Wörterbuch, das hier der Schuldige ist, zu schweben.
  • Ich kann auch mit der rechten Maustaste auf eine Variable klicken und ein "Watch" hinzufügen, das ein "Expressions" -Fenster öffnet. In diesem Fall ist die Variable nur ein degenerierter Fall (sehr einfacher Fall) eines "Ausdrucks".

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.

    
Ronopolis 01.08.2011 19:09
quelle
1

Ich habe diese Zeile einfach kommentiert:

%Vor%

Es scheint, dass Eclipse versucht, mit zu vielen Informationen Schritt zu halten.

    
juale 05.02.2013 21:01
quelle