Einfaches profiling von Python-Code

  • Ich habe ein kleines Paket erstellt mit dem man sehr einfach Funktionen profilen kann. Man kann sehr schnell erkennen, wie oft Funktionen durchlaufen werden und wie viel Zeit dafür benötigt wird. Eine feine Sache um seinen Code zu optimieren :smiling_face: Verwendet wird der hotshot Profiler.


    Als Beispiel möchte ich wissen was in der Funktion buildEpgEntry() meines Plugins vor sich geht. Zunächst muss ich dazu einen Import machen:


    Python
    from merlin.tools import hotshotit


    Außerdem setze ich einen Funktionsdekorator für meine Funktion buildEpgEntry():


    Code
    @hotshotit
    def buildEpgEntry(self, ignoreMe, eventid, sRef, begin, duration, title, short, desc):


    Anschliessend starte ich mein Plugin und sorge dafür, daß die gewünschte Funktion natürlich auch mal aufgerufen wird. Dadurch wird eine Datei /tmp/Funktionsname.prof (also /tmp/buildEpgEntry.prof) angelegt.


    Zum Schluß gehe ich mit telnet auf meine Box und lasse mir das Ergebnis anzeigen (Aufruf ohne die Dateiendung .prof):


    Code
    profistats.sh buildEpgEntry


    Hier das Ergebnis:



    Die Bedeutung der einzelnen Spalten:




    Dieses Paket basiert auf code von Trent Mick und befindet sich im Anhang :smiling_face: