|
| 1 | +Tachyon |
| 2 | +======= |
| 3 | + |
| 4 | +Tachyon ist ein neuer statistischer Sampling-Profiler, der in Python 3.15 als |
| 5 | +:mod:`profiling.sampling` hinzugefügt wurde. Dieser Profiler ermöglicht eine |
| 6 | +leistungsstarke Analyse laufender Python-Prozesse mit geringem Overhead, ohne |
| 7 | +dass Codeänderungen oder ein Neustart des Prozesses erforderlich sind. |
| 8 | + |
| 9 | +Im Gegensatz zu deterministischen Profiler wie :mod:`profiling.tracing`, die |
| 10 | +jeden Funktionsaufruf instrumentieren, erfasst :mod:`profiling.sampling` |
| 11 | +regelmäßig Stack-Traces aus laufenden Prozessen. |
| 12 | + |
| 13 | +Zu den wichtigsten Funktionen gehören: |
| 14 | + |
| 15 | +Profiling ohne Overhead |
| 16 | + :mod:`profiling.sampling` fügt sich in jeden laufenden Python-Prozess ein, |
| 17 | + ohne dessen Leistung zu beeinträchtigen. Dies ist Ideal für die |
| 18 | + Fehlerbehebung in Produktiv-Umgebungen, wo eure Anwendung nicht neu |
| 19 | + gestartet oder verlangsamt werden darf. |
| 20 | +Keine erforderlichen Codeänderungen |
| 21 | + Bestehende Anwendungen können ohne Neustart profiliert werden. Ihr müsst |
| 22 | + einfach anhand der PID den Profiler auf einen laufenden Prozess richten und |
| 23 | + mit der Datenerhebung beginnen. |
| 24 | +Profiliert laufende Prozesse oder Module |
| 25 | + :samp:`attach` |
| 26 | + profiliert laufende Prozesse anhand der PID. |
| 27 | + :samp:`run -m {MODULE}` |
| 28 | + führt Module aus und profiliert sie. |
| 29 | +Mehrere Profiling-Modi |
| 30 | + Ihr könnt auswählen, was gemessen werden soll: |
| 31 | + |
| 32 | + ``--mode wall`` |
| 33 | + Standardwert, der die tatsächlich verstrichene Zeit misst einschließlich |
| 34 | + I/O, Netzwerkwartezeiten und Blockierungsvorgängen. Dies ist ideal |
| 35 | + geeignet um zu verstehen, wo euer Programm Zeit verbraucht, |
| 36 | + einschließlich der Wartezeiten auf externe Ressourcen. |
| 37 | + ``--mode cpu`` |
| 38 | + misst nur die aktive CPU-Ausführungszeit, ohne I/O-Wartezeiten und |
| 39 | + Blockierungen. Verwendet diese Option, um CPU-gebundene Engpässe zu |
| 40 | + identifizieren und die Rechenleistung zu optimieren. |
| 41 | + ``--mode gil`` |
| 42 | + misst die Zeit für das :abbr:`GIL (Global Interpreter Lock)` von Python. |
| 43 | + Verwendet diese Option, um zu ermitteln, welche Threads durch das GIL |
| 44 | + ausgebremst werden. |
| 45 | + ``--mode exception`` |
| 46 | + erfasst nur Samples von Threads mit einer aktiven Ausnahme. Verwendet |
| 47 | + diese Option, um den Overhead beim Exception Handling zu analysieren. |
| 48 | + ``-a`` |
| 49 | + profiliert alle Threads oder nur den Haupt-Thread, wodurch das |
| 50 | + Verständnis für des Verhalten von Multithread-Anwendungen wächst. |
| 51 | + |
| 52 | +Mehrere Ausgabeformate |
| 53 | + Wählt die Visualisierung, die am besten zu Ihrem Workflow passt: |
| 54 | + |
| 55 | + ``--pstats`` |
| 56 | + liefert detaillierte tabellarische Statistiken, kompatibel mit |
| 57 | + :mod:`pstats`. Es zeigt die Zeitmessung auf Funktionsebene mit direkten |
| 58 | + und kumulativen Stichproben an und ist am besten geeignet für |
| 59 | + detaillierte Analysen und die Integration mit vorhandenen |
| 60 | + Python-Profiling-Tools. |
| 61 | + ``--collapsed`` |
| 62 | + erzeugt zusammengefasste Stack-Traces. Dieses Format wurde speziell für |
| 63 | + die Erstellung von `Flame Graphs |
| 64 | + <https://www.brendangregg.com/flamegraphs.html>`_ mit externen Tools wie |
| 65 | + `Brendan Greggs FlameGraph-Skripten |
| 66 | + <https://github.com/brendangregg/FlameGraph>`_ oder `Speedscope |
| 67 | + <https://jamie-wong.com/post/speedscope/>`_ entwickelt. |
| 68 | + ``--flamegraph`` |
| 69 | + erzeugt einen eigenständigen interaktiven HTML-Flamegraph mit `D3.js |
| 70 | + <https://d3js.org/>`_, der sich direkt in Ihrem Browser für eine |
| 71 | + sofortige visuelle Analyse öffnet. |
| 72 | + ``--gecko`` |
| 73 | + erzeugt ein Gecko-Profiler-Format, das mit `Firefox Profiler |
| 74 | + <https://profiler.firefox.com>`_ kompatibel ist. Die Ausgabe kann in |
| 75 | + Firefox Profiler hochgeladen werden, um eine erweiterte |
| 76 | + zeitachsenbasierte Analyse mit Funktionen wie Stapeldiagrammen, Markern |
| 77 | + und Netzwerkaktivitäten durchzuführen. |
| 78 | + ``--heatmap`` |
| 79 | + erzeugt eine interaktive HTML-Heatmap-Visualisierung und erstellt eine |
| 80 | + Heatmap je Datei, die genau zeigen, wo Zeit auf Quellcodeebene |
| 81 | + verbraucht wird. |
| 82 | + |
| 83 | +``--live`` |
| 84 | + `top <https://man7.org/linux/man-pages/man1/top.1.html>`_-ähnliche |
| 85 | + Oberfläche, wodurch ihr die Leistung eurer Anwendung während der Ausführung |
| 86 | + mit interaktiver Sortierung und Filterung Überwachen könnt. |
| 87 | +``--async-aware`` |
| 88 | + Profilerstellung für :doc:`async/await-Code <asyncio-example>`, die euch |
| 89 | + anzeigt, welche Coroutinen Zeit verbrauchen. Weitere Optionen zeigen euch |
| 90 | + nur laufende Aufgaben oder alle Aufgaben einschließlich der wartenden an. |
| 91 | +``--opcodes`` |
| 92 | + sammelt Bytecode-Opcode-Informationen für das Profiling auf Befehlsebene und |
| 93 | + zeigt an, welche Bytecode-Befehle ausgeführt werden, einschließlich |
| 94 | + Spezialisierungen aus dem adaptiven Interpreter. |
| 95 | + |
| 96 | +.. seealso:: |
| 97 | + :mod:`profiling.sampling` |
0 commit comments