Profiling von Python-Threads [duplizieren]

9

Ich versuche herauszufinden, wie ich die Leistung einiger Python-Threads in meiner Anwendung messen kann. Ich habe derzeit mehrere Aufgaben, die auf verschiedenen Threads basierend auf Benutzereingabe ausgeführt werden, und ich möchte die Ausführungszeit, möglicherweise sogar Speicherverbrauch von jedem der Threads messen. Ich habe versucht, cProfile (bei jeder Instantiierung des Threads, dann würde ich die Daten in eine Datei schreiben und dann alle Ergebnisse aggregieren) mit begrenztem Erfolg. Außerdem habe ich ein zusätzliches Problem mit blockierenden IO, die meine Ergebnisse verzerrt. Gibt es trotzdem eine Möglichkeit, meine Bewerbung effektiv zu profilieren?

    
python_noob 07.02.2010, 21:03
quelle

1 Antwort

3

Es gibt verschiedene Möglichkeiten, dieses Problem anzugehen. cProfile ist großartig und kommt mit Python, aber viele Leute sehen Multi-Thread-Profiling als ein Problem. Eine Möglichkeit, dies zu umgehen, besteht darin, für jeden Thread separate Instanzen von cProfile auszuführen und dann die Ergebnisse mit Stats.add zu kombinieren.

Sollte das nicht so nützlich sein, wie Sie es erhofft haben, könnte eine andere Alternative sein, Yappi zu verwenden, die ich Habe Erfolg mit ein paar speziellen Multithread-Fällen. Es hat großartige Dokumentation, so dass Sie nicht zu viel Mühe haben sollten, es einzurichten.

Weitere Informationen zur speicherspezifischen Profilerstellung finden Sie Heapy . Aber seien Sie gewarnt, es kann einige der größten Protokolldateien erstellen, die Sie jemals gesehen haben, wenn Ihr Code schlecht ist!

    
KushalP 07.02.2010 22:13
quelle

Tags und Links