Memory Profiling Tools für Python, Teil 2
pbouda am 02. Sep 13:33
Kaum hatte ich den vorhergehenden Blogeintrag fertig, bin ich mehr oder weniger zufällig auf zwei weitaus interessantere Projekte gestoßen, die Speicherlecks in Python-Anwendungen aufspüren sollen. Hier also, der Vollständigkeit halber, die Vo:
- Meliae: Für Python 2, wird aber im Gegensatz zu heapy aktiv weiter entwickelt. Für meine Zwecke aber derzeit unbrauchbar, bis es auch mit Python 3 funktioniert.
- gdb-heap: dies scheint aber nun wirklich der beste Ansatz zu sein: über die Python-Schnittstelle von gdb klinkt man sich direkt in eine laufende Anwendung ein und schaut sich im Speicher um. Es gibt ein spezielles Python-Modul zur Analyse der einzelnen Objekte, das an die Speicherverwaltung von Python angepasst ist. Einziger Wermutstropfen: das Tool scheint sehr an die gdb-Version von Fedora gebunden zu sein. Bei einem kurzen Versuch unter Ubuntu wollte jedenfalls das Python-Modul nicht starten. Definitiv aber ein Projekt, das ich weiter beobachten werde. Auf der Seite findet sich außerdem ein Link auf einen Vortrag auf der PyCon US 2011, der sehr schön die einzelnen Ansätze zur Speicheranalyse unter Python erklärt.
Speicherlecks in Python-Skripten finden
pbouda am 19. Aug 13:10
Da ich gerade ein kleines Speicherproblem mit einer Python-Anwendung hatte (und ich dachte schon, 8 GB RAM reichen erst einmal...), habe ich mich mal nach einem Memory-Profiler für Python-Skripte umgeschaut. Und leider nichts Vernünftiges gefunden. Was auch daran liegt, dass ich komplett auf Python 3 umgestiegen bin, und die Python-2-Profiler dann leider komplett den Dienst versagen. Hier mal drei Pakete, die wohl unter Python 2 funktionieren sollen:
- heapy: Ist angeblich das komplexeste, aber auch beste aller Tools. Als Ergebnis einer Master-Thesis entstanden, die es auch auf der Webseite zum Herunterladen gibt. Portierung auf Python 3 wohl nicht in Sicht. Und nach kurzer Ansicht des Quellcodes wohl auch nicht mal an einem Nachmittag durchführbar.
- PySizer: Weniger mächtig als heapy, und noch älter. Portierung nicht in Sichtweite.
- dowser: Die einfachste Art und Weise für Memory-Profiling. Das Tool lässt sich äußerst einfach in eigene Python-Skripte einbinden und stellt die Information dann per cherrypy zur Verfügung. So hat man während der Laufzeit des Skripts in einem Webbrowser einen Überblick über die aktuellen Objekte und deren Speicherverbrauch. Ich habe es
fast geschafft, das Ding unter Python 3 zum Laufen zu bringen; allerdings benutzt es die Python Imaging Library, für die es noch keine vernünftige Python-3-Version gibt. So fehlen auf der Ausgabe-Webseite dann die Bilder. Außerdem konnte ich die TRACE-Seiten nicht öffnen. Es waren wohl einfach zu viele Objekte in meinem Skript.
Wieder einmal das leidige Thema: Python 3 ist bestimmt toll, aber wenn es halt jeder ignoriert werden wir in 10 Jahren immer noch Anwendungen unter Python 2.x entwickeln. Übrigens habe ich letztendlich einen anderen Weg für das Speicherproblem gefunden. Das Problem war ein Parser; mit regulären Audrücken komme ich jetzt mit weniger Speicher und
Python auf dem N9
pbouda am 22. Jul 11:40
Die Nachricht ist wohl schon länger veröffentlicht, ich sehe das jedoch gerade erst: auf dem N9, Nokias erstem und letztem (?) MeeGo-Gerät, werden Python-Anwendungen und C++-Anwendungen praktisch gleichgestellt. D.h. das SDK unterstützt die Entwicklung von Anwendungen per Python und PySide, und man kann diese Anwendungen dann im Ovi Store veröffentlichen, oder wie auch immer der Laden jetzt heißt. Hier die offizielle Ankündigung:
http://www.meegoexperts.com/2011/06/harmattan-python-meego/
Damit ist und bleibt Maemo/MeeGo das einzige mobile Betriebssystem, für das sich uneingeschränkt Apps in Python entwickeln lassen. Es ergeht hiermit also ein Kaufbefehl für das N9 an alle Python-Programmierer!
Neues Tutorial: Relative Entropie
pbouda am 07. Jul 14:14
Da ich mich gerade informationstheoretisch weiterbilde hier ein kleines mathematisches Tutorial zur Visualisierung der relativen Entropie zweier binärer Wahrscheinlichkeitsfunktionen:
Relative Entropie visualisieren mit Mayavi
Das Ganze ist ein kleines Python-Skript, das zur Darstellung Mayavi benutzt.
Bluetooth mit Arduino, N900 und Python
pbouda am 15. Apr 10:25
Im Prinzip handelt es sich auch um einen schon etwas älteren Beitrag in einem meiner alten Blogs, aber neu ist er trotzdem hier im Wiki:
Wie man per Bluetooth zwischen Arduino und dem N900 kommuniziert. Der Arduino-Teil ist in Processing geschrieben, der Code auf dem N900 in Python. Im Prinzip zeigt der Python-Code allgemein die serielle Bluetooth-Kommunikation per dbus und bluez. Der Beitrag ist in diesem Fall auf Englisch, ich werde inmer mal wieder englische Beiträge veröffentlichen, einfach um ein bisserl das Englisch-Schreiben zu üben. Und um, naja, den potentiellen Leserkreis etwas auszuweiten.
Neues Tutorial: Augmented Reality mit Python
pbouda am 22. Mär 16:43
Nachdem ich nun alle meine Text über Skriptsprachen ins Wiki umgezogen habe, folgt heute der erste Teil einer neuen Tutorial-Reihe, die sich ausschließlich mit der Programmierung von Skriptsprachen beschäftigen wird. Es geht auch gleich spannend los: mit einem Tutorial über Augmented Reality mit OpenCV, PyQt und OpenGL. Ich hatte die Idee dazu schon länger, dachte allerdings, dass es recht kompliziert wäre. Aber nichts da: nach ein bisschen Herumbasteln lief das Ganze schon recht schön. Und das wollte ich euch natürlich nicht vorenthalten.
Die "ersten" Wiki-Einträge
pbouda am 04. Mär 10:39
Werft ruhig mal einen kurzen Blick ins Wiki: die ersten (kleineren) Einträge sind erschienen, über Perl, Python und Ruby (on Rails). Da werden in den nächsten Tagen noch einige dazu gekommen, was sich halt so bei mir angesammelt hat. Viel Spaß damit!
Erstes Release von PySide Mobility
pbouda am 23. Aug 18:00
Ist zwar schon etwas her, hier wurde es aber noch nicht vermeldet: Eine erste Version (0.1.0) der PySide-Bindings von Qt Mobility wurde veröffentlicht. Auch auf dem N900 in extras-devel verfügbar. Hoffentlich geht's weiter so voran mit PySide, und Nokia sollte bald Python-Anwendungen für Maemo im Ovi Store erlauben.
Benchmarks für PySide
pbouda am 12. Mai 18:15
Mit der Veröffentlichung von PySide 0.3 vor einigen Wochen wurde und auch ein Benchmark versprochen. Jetzt ist er online, der Vergleich von PySide 0.2, PySide 0.3 und natürlich auch PyQt4 jeweils auf dem Desktop und dem N900: an dieser Stelle verweise ich einfach ohne Umschweife darauf. Die Entwickler scheinen auf einem guten Weg zu sein, die Abkehr von Boost war sicherlich eine späte, aber weise Entscheidung. Vor allem, wenn man bedenkt, dass das Ganze ja auch auf dem N900 (und Nachfolgern) laufen soll. Bin gespannt, wann sie dann PyQt einholen.
Technische Vorschau auf PySide-Shiboken
pbouda am 24. Mär 19:17
Heute wurde eine technische Vorschau auf Shiboken-PySide veröffentlicht. Shiboken ist eine von den PySide-Entwicklern ins Leben gerufene Umgebung zur Erstellung von Python-Bindings für C++-Bibliotheken. Zunächst wurden die PySide-Bindings per Boost.Python erstellt, das offizielle Release von PySide nutzt immer noch diese. Da Boost.Python die Bibliotheken jedoch unnötig aufbläht, begannen die PySide-Entwickler mit der Entwicklung von Shiboken. Einer der Entwickler hat darüber eine interessanten Blogeintrag geschrieben. Es gibt immer noch einige Diskussionen über die Vorteile von PyQt4 gegenüber PySide, letzteres holt aber kräftig auf und wenn ich wetten dürfte: wird irgendwann PyQt4 obsolet machen.
Neues Tutorial: Wie man ein Python- oder PySide-Projekt für Maemo erstellt
pbouda am 23. Mär 19:39
Ab sofort ist das erste Python-Tutorial zur Anwendungsentwickung für Maemo und das N900 auf mobileqt.de online:
Wie man ein Python- oder PySide-Projekt für Maemo erstellt
Am Beispiel einer kleinen PySide-Anwendung wird gezeigt, wie ihr eure Python-Anwendungen aufbauen und verpacken müsst, damit sie auf dem N900 installiert werden können. Für alle, die nicht in die Untiefen der Qt/C++-Programmierung einsteigen wollen ist Python eine leichte und schnelle Alternative. Die Hautpdatei der Beispielanwendung habe ich übrigens komplett mit dem PyGTKEditor auf dem N900 entwickelt.
