Timing der CPU-Zeit von einem python-Programm?
Ich würde gerne mal ein Ausschnitt von meinem code, und ich möchte nur die CPU-Ausführungszeit (ignorieren Betriebssystem, Prozesse, etc).
Habe ich mal versucht.Uhr () scheint es zu ungenau, und gibt eine andere Antwort jedes mal. (In der Theorie sicherlich, wenn ich es wieder für den gleichen code-snippet sollte es wieder der gleiche Wert??)
Ich habe schon mit timeit für etwa eine Stunde. Im Grunde das, was tötet, es ist für mich das "setup" - Prozess, habe ich am Ende mit zu importieren von rund 20 Funktionen, die nicht praktikabel ist, da bin ich praktisch nur re-schreiben mein code in der setup-Abschnitt, um zu versuchen und verwenden Sie es.
Cprofiles suchen mehr und mehr attraktiv aus, aber das tun Sie wieder die CPU-Zeit? auch, ein kleiner Punkt - es gibt viel zu viel Informationen. Gibt es eine Möglichkeit, um die ausgegebenen Informationen in eine txt-oder .dat-Datei, so kann ich eigentlich gelesen?
Cheers
OS: Ubuntu Programm: python 2.7
- Beachten Sie, dass Sie die unterschiedlichen Zeiten für jeden Lauf, auch wenn Sie zählen möchten, cpu-Zyklen gegessen nur durch Ihren Prozess. Dies ist, weil der CPU-cache, was am Ende in den anderen Zustand (mit anderen teilen Ihres Adressraum) jedes mal. CPU-cache ist geteilt zwischen Prozessen, so dass Sie nicht garantieren können, dass zum Beispiel jedes mal, wenn Sie führen Sie den code, eine bestimmte variable wird im cache gehalten.
- Ressource.getrusage können verwendet werden, um Prozess-Zeit in python 2.7
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es klingt wie Sie sind auf der Suche nach einem Weg, um die Zeit der Prozess-weiten Ausführung Zeit, das beste, was man tun kann, ist timeit.default_timer() das bietet die genaue Zeit.clock() oder time.time () - Funktion zur Verfügung, die auf der aktuellen Plattform, aber es ist system-wide Zeit, was bedeutet, dass andere proceses stören können mit Ihren Messungen.
Hier die Infos von den docs von timeit.default_timer():
Sollten Sie versuchen, testen von c-Modulen, die möglicherweise den Zugang zu den verschiedenen timing-apis.
Die beste Möglichkeit, dies zu tun ist durch die Verwendung Zeit.process_time() die nur in python 3.3 und bis, hier die Infos von den docs:
process_time
steht nur in Python 3.3 und später, ist er mit 2.7.timeit.default_timer()
isttime.perf_counter()
auf Python 3.3+. Hier sindtime.process_time()
undtime.perf_counter()
für Python 2 auf Ubuntu.Statt
time.clock()
verwendentimeit.default_timer()
; es verwendet die genauesten option für Ihre Plattform. Für Ubuntu, zum Beispiel, dies wird mittime.time()
statt.Bei der Verwendung
timeit
erstellen Sie eine setup-Funktion, die Sie anschließend wieder verwenden können fürtimeit
. Ja, das sieht nach ein bisschen Arbeit, aber es sorgt dafür, dass Sie mal was Sie wirklich wollte, zu Messen, und nicht setup-code in den kritischen Abschnitt gemessen.