{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# iPython Profiler\n", "\n", "IPython bietet Zugriff auf eine breite Palette von Funktionen um die Zeiten zu messen und Profile zu erstellen. Hier werden die folgenden magischen IPython-Befehle erläutert:\n", "\n", "| Befehl | Beschreibung |\n", "| -------------- | --------------------------------------------------------------------------------- |\n", "| `%time` | Zeit für die Ausführung einer einzelnen Anweisung |\n", "| `%timeit` | Durchschnittliche Zeit für die wiederholte Ausführung einer einzelnen Anweisung |\n", "| `%prun` | Code mit dem Profiler ausführen |\n", "| `%lprun` | Code mit dem zeilenweisen Profiler ausführen |\n", "| `%memit` | Messen der Speichernutzung einer einzelnen Anweisung |\n", "| `%mprun` | Führt den Code mit dem zeilenweisen Memory-Profiler aus |\n", "\n", "Die letzten vier Befehle sind nicht in IPython selbst, sondern in den Modulen [line_profiler](https://github.com/pyutils/line_profiler) und [memory_profiler](https://github.com/pythonprofilers/memory_profiler) enthalten.\n", "\n", "
\n", "\n", "**Siehe auch**\n", "\n", "* [Penn Machine Learning Benchmarks](https://github.com/EpistasisLab/pmlb)\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## `%timeit` und `%time`\n", "\n", "Wir haben die `%timeit`Zeilen- und `%%timeit`-Zellmagie bereits in der Einführung der magischen Funktionen in IPython Magic Commands gesehen. Sie können für Zeitmessungen bei der wiederholten Ausführung von Code-Schnipseln verwendet werden:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "execution": { "iopub.execute_input": "2026-05-21T21:48:38.026718Z", "iopub.status.busy": "2026-05-21T21:48:38.026395Z", "iopub.status.idle": "2026-05-21T21:48:40.698248Z", "shell.execute_reply": "2026-05-21T21:48:40.697516Z", "shell.execute_reply.started": "2026-05-21T21:48:38.026700Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "326 ns ± 0.584 ns per loop (mean ± std. dev. of 7 runs, 1,000,000 loops each)\n" ] } ], "source": [ "%timeit sum(range(100))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Beachtet, dass `%timeit` die Ausführung mehrfach in einer Schleife (`loops`) ausführt. Wenn mit `-n` nicht die Anzahl der Schleifen festgelegt wird, passt `%timeit` die Anzahl automatisch so an, dass ein ausreichende Messgenauigkeit erreicht wird:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "execution": { "iopub.execute_input": "2026-05-21T21:48:40.698691Z", "iopub.status.busy": "2026-05-21T21:48:40.698596Z", "iopub.status.idle": "2026-05-21T21:48:46.497029Z", "shell.execute_reply": "2026-05-21T21:48:46.496733Z", "shell.execute_reply.started": "2026-05-21T21:48:40.698681Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "71.6 ms ± 333 μs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n" ] } ], "source": [ "%%timeit\n", "total = 0\n", "for i in range(1000):\n", " for j in range(1000):\n", " total += i * (-1) ** j" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Manchmal ist das Wiederholen einer Operation nicht die beste Option, z.B. wenn wir eine Liste haben, die wir sortieren möchten. Hier werden wir möglicherweise durch eine wiederholte Operation in die Irre geführt. Das Sortieren einer vorsortierten Liste ist viel schneller als das Sortieren einer unsortierten Liste, sodass die Wiederholung das Ergebnis verzerrt:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "execution": { "iopub.execute_input": "2026-05-21T21:48:46.497826Z", "iopub.status.busy": "2026-05-21T21:48:46.497597Z", "iopub.status.idle": "2026-05-21T21:48:48.338036Z", "shell.execute_reply": "2026-05-21T21:48:48.337734Z", "shell.execute_reply.started": "2026-05-21T21:48:46.497814Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "224 μs ± 3.52 μs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)\n" ] } ], "source": [ "import random\n", "\n", "\n", "L = [random.random() for i in range(100000)]\n", "\n", "%timeit L.sort()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Dann ist die `%time`-Funktion möglicherweise die bessere Wahl. Auch bei länger laufenden Befehlen, wenn kurze systembedingte Verzögerungen das Ergebnis wahrscheinlich kaum beeinflussen, dürfte `%time` die bessere Wahl sein:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "execution": { "iopub.execute_input": "2026-05-21T21:48:48.338523Z", "iopub.status.busy": "2026-05-21T21:48:48.338443Z", "iopub.status.idle": "2026-05-21T21:48:50.157819Z", "shell.execute_reply": "2026-05-21T21:48:50.157429Z", "shell.execute_reply.started": "2026-05-21T21:48:48.338514Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "222 μs ± 1.26 μs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)\n" ] } ], "source": [ "import random\n", "\n", "\n", "ls = [random.random() for i in range(100000)]\n", "%timeit ls.sort()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Sortieren einer bereits sortierten Liste:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "execution": { "iopub.execute_input": "2026-05-21T21:48:50.158467Z", "iopub.status.busy": "2026-05-21T21:48:50.158320Z", "iopub.status.idle": "2026-05-21T21:48:50.160962Z", "shell.execute_reply": "2026-05-21T21:48:50.160663Z", "shell.execute_reply.started": "2026-05-21T21:48:50.158454Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 217 μs, sys: 0 ns, total: 217 μs\n", "Wall time: 221 μs\n" ] } ], "source": [ "%time ls.sort()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Beachtet, wie viel schneller die vorsortierte Liste zu sortieren ist, aber beachtet auch, wie viel länger das Timing mit `%time` gegenüber `%timeit` dauert, sogar für die vorsortierte Liste. Dies ist auf die Tatsache zurückzuführen, dass `%timeit` einige clevere Dinge unternimmt, um zu verhindern, dass Systemaufrufe die Zeitmessung stören. So wird beispielsweise die *Garbage Collection* nicht mehr verwendeter Python-Objekte verhindert, die sich andernfalls auf die Zeitmessung auswirken könnten. Aus diesem Grund sind die `%timeit`-Ergebnisse normalerweise merklich schneller als die `%time`-Ergebnisse." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Profilerstellung für Skripte: `%prun`\n", "\n", "Ein Programm besteht aus vielen einzelnen Anweisungen, und manchmal ist es wichtiger, diese Anweisungen im Kontext zu messen, als sie selbst zu messen. Python enthält einen integrierten [Code-Profiler](https://docs.python.org/3/library/profile.html). IPython bietet jedoch eine wesentlich bequemere Möglichkeit, diesen Profiler in Form der Magic-Funktion zu verwenden: `%prun`.\n", "\n", "Als Beispiel definieren wir eine einfache Funktion, die einige Berechnungen durchführt:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "execution": { "iopub.execute_input": "2026-05-21T21:48:50.162711Z", "iopub.status.busy": "2026-05-21T21:48:50.162606Z", "iopub.status.idle": "2026-05-21T21:48:50.164465Z", "shell.execute_reply": "2026-05-21T21:48:50.164226Z", "shell.execute_reply.started": "2026-05-21T21:48:50.162703Z" } }, "outputs": [], "source": [ "def sum_of_lists(n):\n", " total = 0\n", " for i in range(5):\n", " ls = [j ^ (j >> i) for j in range(n)]\n", " total += sum(ls)\n", " return total" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "execution": { "iopub.execute_input": "2026-05-21T21:48:50.165112Z", "iopub.status.busy": "2026-05-21T21:48:50.164727Z", "iopub.status.idle": "2026-05-21T21:48:50.387009Z", "shell.execute_reply": "2026-05-21T21:48:50.386607Z", "shell.execute_reply.started": "2026-05-21T21:48:50.165102Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " " ] }, { "data": { "text/plain": [ " 998 function calls (972 primitive calls) in 0.235 seconds\n", "\n", " Ordered by: internal time\n", "\n", " ncalls tottime percall cumtime percall filename:lineno(function)\n", " 5/1 0.138 0.028 0.000 0.000 {method 'control' of 'select.kqueue' objects}\n", " 14 0.022 0.002 0.025 0.002 socket.py:626(send)\n", " 2/1 0.020 0.010 0.020 0.020 :1()\n", " 5 0.018 0.004 0.018 0.004 {built-in method builtins.sum}\n", " 2 0.018 0.009 0.068 0.034 iostream.py:276()\n", " 2 0.012 0.006 0.012 0.006 {method 'recv' of '_socket.socket' objects}\n", " 1 0.006 0.006 0.006 0.006 poll.py:80(poll)\n", " 9 0.000 0.000 0.000 0.000 attrsettr.py:66(_get_attr_opt)\n", " 7 0.000 0.000 0.213 0.030 base_events.py:1947(_run_once)\n", " 9/6 0.000 0.000 0.044 0.007 {method 'run' of '_contextvars.Context' objects}\n", " 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}\n", " 96 0.000 0.000 0.000 0.000 enum.py:1574(_get_value)\n", " 3 0.000 0.000 0.000 0.000 threading.py:303(__enter__)\n", " 203/195 0.000 0.000 0.000 0.000 {built-in method builtins.isinstance}\n", " 18 0.000 0.000 0.000 0.000 enum.py:1581(__or__)\n", " 9 0.000 0.000 0.000 0.000 attrsettr.py:43(__getattr__)\n", " 4 0.000 0.000 0.000 0.000 socket.py:774(recv_multipart)\n", " 5/1 0.000 0.000 0.000 0.000 selectors.py:540(select)\n", " 2/1 0.000 0.000 0.020 0.020 {built-in method builtins.exec}\n", " 2 0.000 0.000 0.025 0.013 socket.py:703(send_multipart)\n", " 45 0.000 0.000 0.000 0.000 enum.py:691(__call__)\n", " 4 0.000 0.000 0.043 0.011 zmqstream.py:624(_handle_recv)\n", " 14 0.000 0.000 0.000 0.000 enum.py:1592(__and__)\n", " 10/6 0.000 0.000 0.044 0.007 events.py:87(_run)\n", " 4 0.000 0.000 0.044 0.011 zmqstream.py:583(_handle_events)\n", " 45 0.000 0.000 0.000 0.000 enum.py:1145(__new__)\n", " 1 0.000 0.000 0.000 0.000 inspect.py:3116(_bind)\n", " 7/6 0.000 0.000 0.044 0.007 ioloop.py:742(_run_callback)\n", " 12 0.000 0.000 0.000 0.000 typing.py:426(inner)\n", " 5 0.000 0.000 0.000 0.000 zmqstream.py:663(_rebuild_io_state)\n", " 1 0.000 0.000 0.000 0.000 {method 'execute' of 'sqlite3.Connection' objects}\n", " 1 0.000 0.000 0.000 0.000 {method 'send' of '_socket.socket' objects}\n", " 5 0.000 0.000 0.000 0.000 base_events.py:848(_call_soon)\n", " 2 0.000 0.000 0.000 0.000 {method '__exit__' of 'sqlite3.Connection' objects}\n", " 1 0.000 0.000 0.006 0.006 zmqstream.py:427(flush)\n", " 1 0.000 0.000 0.000 0.000 history.py:845(writeout_cache)\n", " 6 0.000 0.000 0.000 0.000 queue.py:115(empty)\n", " 3 0.000 0.000 0.000 0.000 asyncio.py:225(add_callback)\n", " 5 0.000 0.000 0.000 0.000 zmqstream.py:686(_update_handler)\n", " 1 0.000 0.000 0.012 0.012 selector_events.py:129(_read_from_self)\n", " 1 0.000 0.000 0.000 0.000 kernelbase.py:302(poll_control_queue)\n", " 1 0.000 0.000 0.000 0.000 74316826.py:1(sum_of_lists)\n", " 9 0.000 0.000 0.000 0.000 :1390(_handle_fromlist)\n", " 9 0.000 0.000 0.000 0.000 base_events.py:768(time)\n", " 9 0.000 0.000 0.000 0.000 {built-in method builtins.getattr}\n", " 2 0.000 0.000 0.000 0.000 iostream.py:710(_flush_buffers)\n", " 5 0.000 0.000 0.000 0.000 events.py:36(__init__)\n", " 4 0.000 0.000 0.043 0.011 zmqstream.py:556(_run_callback)\n", " 8 0.000 0.000 0.000 0.000 traitlets.py:676(__get__)\n", " 8 0.000 0.000 0.000 0.000 typing.py:1443(__hash__)\n", " 1 0.000 0.000 0.000 0.000 _base.py:537(set_result)\n", " 1 0.000 0.000 0.000 0.000 queues.py:225(get)\n", " 1 0.000 0.000 0.000 0.000 history.py:833(_writeout_input_cache)\n", " 2 0.000 0.000 0.025 0.013 iostream.py:278(_really_send)\n", " 8 0.000 0.000 0.000 0.000 traitlets.py:629(get)\n", " 4 0.000 0.000 0.000 0.000 typing.py:1665(__subclasscheck__)\n", " 28 0.000 0.000 0.000 0.000 {built-in method builtins.len}\n", " 2 0.000 0.000 0.000 0.000 iostream.py:718(_rotate_buffers)\n", " 1 0.000 0.000 0.000 0.000 decorator.py:199(fix)\n", " 1 0.000 0.000 0.000 0.000 traitlets.py:1527(_notify_observers)\n", " 1 0.000 0.000 0.006 0.006 kernelbase.py:324(_flush)\n", " 2 0.000 0.000 0.000 0.000 traitlets.py:3631(set)\n", " 4 0.000 0.000 0.044 0.011 zmqstream.py:694()\n", " 14 0.000 0.000 0.000 0.000 {built-in method builtins.hasattr}\n", " 1 0.000 0.000 0.025 0.025 decorator.py:229(fun)\n", " 1 0.000 0.000 0.000 0.000 queues.py:186(put)\n", " 2 0.000 0.000 0.000 0.000 iostream.py:616(_flush)\n", " 2 0.000 0.000 0.000 0.000 traitlets.py:689(set)\n", " 1 0.000 0.000 0.000 0.000 inspect.py:3255(bind)\n", " 7 0.000 0.000 0.000 0.000 selector_events.py:740(_process_events)\n", " 4 0.000 0.000 0.000 0.000 {built-in method _abc._abc_subclasscheck}\n", " 2 0.000 0.000 0.000 0.000 traitlets.py:718(_validate)\n", " 4 0.000 0.000 0.043 0.011 iostream.py:157(_handle_event)\n", " 4 0.000 0.000 0.000 0.000 base_events.py:819(call_soon)\n", " 4 0.000 0.000 0.000 0.000 typing.py:1374(__instancecheck__)\n", " 2 0.000 0.000 0.000 0.000 traitlets.py:3474(validate)\n", " 1 0.000 0.000 0.000 0.000 inspect.py:2930(apply_defaults)\n", " 2 0.000 0.000 0.000 0.000 {built-in method _heapq.heappop}\n", " 1 0.000 0.000 0.000 0.000 queues.py:209(put_nowait)\n", " 13 0.000 0.000 0.000 0.000 {method 'popleft' of 'collections.deque' objects}\n", " 1 0.000 0.000 0.000 0.000 threading.py:631(clear)\n", " 2 0.000 0.000 0.000 0.000 {method '__enter__' of '_thread.lock' objects}\n", " 6 0.000 0.000 0.000 0.000 zmqstream.py:542(sending)\n", " 1 0.000 0.000 0.000 0.000 traitlets.py:1512(_notify_trait)\n", " 4 0.000 0.000 0.000 0.000 :121(__subclasscheck__)\n", " 1 0.000 0.000 0.000 0.000 queues.py:256(get_nowait)\n", " 1 0.000 0.000 0.000 0.000 history.py:55(only_when_enabled)\n", " 2 0.000 0.000 0.000 0.000 queues.py:322(_consume_expired)\n", " 3 0.000 0.000 0.000 0.000 threading.py:306(__exit__)\n", " 2 0.000 0.000 0.000 0.000 traitlets.py:3624(validate_elements)\n", " 9 0.000 0.000 0.000 0.000 {method 'upper' of 'str' objects}\n", " 2 0.000 0.000 0.000 0.000 iostream.py:213(_is_master_process)\n", " 1 0.000 0.000 0.000 0.000 zmqstream.py:468(update_flag)\n", " 2 0.000 0.000 0.000 0.000 traitlets.py:727(_cross_validate)\n", " 1 0.000 0.000 0.000 0.000 futures.py:393(_call_set_state)\n", " 4 0.000 0.000 0.000 0.000 {built-in method builtins.issubclass}\n", " 11 0.000 0.000 0.000 0.000 {method 'append' of 'collections.deque' objects}\n", " 9 0.000 0.000 0.000 0.000 {built-in method time.monotonic}\n", " 2 0.000 0.000 0.000 0.000 traitlets.py:708(__set__)\n", " 10 0.000 0.000 0.000 0.000 {method '__exit__' of '_thread.lock' objects}\n", " 1 0.000 0.000 0.000 0.000 selector_events.py:141(_write_to_self)\n", " 1 0.000 0.000 0.000 0.000 inspect.py:2877(args)\n", " 1 0.000 0.000 0.000 0.000 threading.py:315(_acquire_restore)\n", " 6 0.000 0.000 0.000 0.000 {built-in method builtins.max}\n", " 1 0.000 0.000 0.000 0.000 threading.py:428(notify_all)\n", " 1 0.000 0.000 0.000 0.000 traitlets.py:1523(notify_change)\n", " 6 0.000 0.000 0.000 0.000 queue.py:267(_qsize)\n", " 6 0.000 0.000 0.000 0.000 {built-in method builtins.next}\n", " 1 0.000 0.000 0.000 0.000 base_events.py:872(call_soon_threadsafe)\n", " 2 0.000 0.000 0.000 0.000 traitlets.py:2304(validate)\n", " 5 0.000 0.000 0.000 0.000 {method 'get' of 'dict' objects}\n", " 9 0.000 0.000 0.000 0.000 zmqstream.py:538(receiving)\n", " 30 0.000 0.000 0.000 0.000 typing.py:2366(cast)\n", " 1 0.000 0.000 0.000 0.000 concurrent.py:182(future_set_result_unless_cancelled)\n", " 1 0.000 0.000 0.000 0.000 threading.py:398(notify)\n", " 2 0.000 0.000 0.000 0.000 {method 'set_result' of '_asyncio.Future' objects}\n", " 1 0.000 0.000 0.000 0.000 _base.py:337(_invoke_callbacks)\n", " 5 0.000 0.000 0.000 0.000 {method 'append' of 'list' objects}\n", " 4 0.000 0.000 0.000 0.000 {built-in method _contextvars.copy_context}\n", " 1 0.000 0.000 0.000 0.000 base_events.py:1932(_add_callback)\n", " 1 0.000 0.000 0.000 0.000 history.py:839(_writeout_output_cache)\n", " 1 0.000 0.000 0.000 0.000 queues.py:317(__put_internal)\n", " 1 0.000 0.000 0.000 0.000 events.py:129(__lt__)\n", " 2 0.000 0.000 0.000 0.000 traitlets.py:3486(validate_elements)\n", " 3 0.000 0.000 0.000 0.000 {method 'acquire' of '_thread.lock' objects}\n", " 8 0.000 0.000 0.000 0.000 {built-in method builtins.hash}\n", " 1 0.000 0.000 0.000 0.000 threading.py:312(_release_save)\n", " 1 0.000 0.000 0.000 0.000 {method 'values' of 'mappingproxy' objects}\n", " 2 0.000 0.000 0.000 0.000 {method 'cancelled' of '_asyncio.Future' objects}\n", " 10 0.000 0.000 0.000 0.000 inspect.py:2787(kind)\n", " 1 0.000 0.000 0.000 0.000 inspect.py:2900(kwargs)\n", " 1 0.000 0.000 0.000 0.000 {built-in method _thread.allocate_lock}\n", " 1 0.000 0.000 0.000 0.000 {method '__enter__' of '_thread.RLock' objects}\n", " 2 0.000 0.000 0.000 0.000 iostream.py:216(_check_mp_mode)\n", " 3 0.000 0.000 0.000 0.000 {method '__exit__' of '_thread.RLock' objects}\n", " 1 0.000 0.000 0.000 0.000 poll.py:31(register)\n", " 5 0.000 0.000 0.000 0.000 base_events.py:550(_check_closed)\n", " 2 0.000 0.000 0.000 0.000 {built-in method builtins.iter}\n", " 1 0.000 0.000 0.000 0.000 {built-in method posix.getppid}\n", " 7 0.000 0.000 0.000 0.000 base_events.py:2045(get_debug)\n", " 1 0.000 0.000 0.000 0.000 unix_events.py:83(_process_self_data)\n", " 3 0.000 0.000 0.000 0.000 {method 'items' of 'mappingproxy' objects}\n", " 1 0.000 0.000 0.000 0.000 queues.py:173(qsize)\n", " 2 0.000 0.000 0.000 0.000 {built-in method posix.getpid}\n", " 1 0.000 0.000 0.000 0.000 {method '_is_owned' of '_thread.RLock' objects}\n", " 2 0.000 0.000 0.000 0.000 {method 'items' of 'dict' objects}\n", " 3 0.000 0.000 0.000 0.000 {built-in method _asyncio.get_running_loop}\n", " 2 0.000 0.000 0.000 0.000 {method 'extend' of 'list' objects}\n", " 1 0.000 0.000 0.000 0.000 queues.py:309(_get)\n", " 4 0.000 0.000 0.000 0.000 inspect.py:3070(parameters)\n", " 4 0.000 0.000 0.000 0.000 inspect.py:2775(name)\n", " 1 0.000 0.000 0.000 0.000 queues.py:312(_put)\n", " 1 0.000 0.000 0.000 0.000 queues.py:177(empty)\n", " 1 0.000 0.000 0.000 0.000 threading.py:318(_is_owned)\n", " 1 0.000 0.000 0.000 0.000 {method 'done' of '_asyncio.Future' objects}\n", " 2 0.000 0.000 0.000 0.000 iostream.py:255(closed)\n", " 1 0.000 0.000 0.000 0.000 queues.py:59(_set_timeout)\n", " 1 0.000 0.000 0.000 0.000 inspect.py:2869(__init__)\n", " 1 0.000 0.000 0.000 0.000 {method 'release' of '_thread.lock' objects}\n", " 1 0.000 0.000 0.000 0.000 zmqstream.py:659(_check_closed)\n", " 1 0.000 0.000 0.000 0.000 base_events.py:754(is_closed)\n", " 1 0.000 0.000 0.000 0.000 locks.py:224(clear)" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%prun sum_of_lists(1000000)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Im Notebook sieht die Ausgabe ungefähr so aus:\n", "\n", "```\n", "14 function calls in 9.597 seconds\n", "\n", " Ordered by: internal time\n", "\n", " ncalls tottime percall cumtime percall filename:lineno(function)\n", " 5 8.121 1.624 8.121 1.624 :4()\n", " 5 0.747 0.149 0.747 0.149 {built-in method builtins.sum}\n", " 1 0.665 0.665 9.533 9.533 :1(sum_of_lists)\n", " 1 0.065 0.065 9.597 9.597 :1()\n", " 1 0.000 0.000 9.597 9.597 {built-in method builtins.exec}\n", " 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Das Ergebnis ist eine Tabelle, die sortiert nach Gesamtzeit für jeden Funktionsaufruf die Ausführungsdauer angibt. In diesem Fall wird die meiste Zeit mit *List Comprehension* innerhalb von `sum_of_lists` verbraucht. Dies gibt uns Anhaltspunkte, an welcher Stelle wir die Effizienz des Algorithmus verbessern könnten." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Zeilenweise Profilerstellung: `%lprun`\n", "\n", "Die Profilerstellung von `%prun` ist nützlich, aber manchmal ist ein zeilenweiser Profilreport aufschlussreicher. Dies ist nicht in Python oder IPython integriert, aber mit [line_profiler](https://github.com/rkern/line_profiler) steht ein Paket zur Verfügung, das dies ermöglicht. Diese kann in eurem Kernel bereitgestellt werden mit\n", "\n", "```\n", "$ spack env activate python-311\n", "$ spack install py-line-profiler\n", "```\n", "\n", "Alternativ könnt ihr `line-profiler` auch mit anderen Paketmanagern installieren, z.B.\n", "\n", "```\n", "$ uv add line_profiler\n", "```\n", "\n", "Falls ihr Python 3.7.x verwendet und die Fehlermeldung bekommt `error: command 'clang' failed with exit status 1`, bleibt aktuell nur, `Cython` zusammen mit den Ressourcen aus dem Git-Repository zu installieren:\n", "\n", "```\n", "$ uv add Cython git+https://github.com/rkern/line_profiler.git#egg=line_profiler\n", "```\n", "\n", "Nun könnt ihr IPython mit der `line_profiler`-Erweiterung laden:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "execution": { "iopub.execute_input": "2026-05-21T21:48:50.387445Z", "iopub.status.busy": "2026-05-21T21:48:50.387361Z", "iopub.status.idle": "2026-05-21T21:48:50.405313Z", "shell.execute_reply": "2026-05-21T21:48:50.405020Z", "shell.execute_reply.started": "2026-05-21T21:48:50.387437Z" } }, "outputs": [], "source": [ "%load_ext line_profiler" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Der `%lprun`-Befehl führt eine zeilenweise Profilerstellung für jede Funktion durch. In diesem Fall muss explizit angegeben werden, welche Funktionen für die Profilerstellung interessant sind:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "execution": { "iopub.execute_input": "2026-05-21T21:48:50.405788Z", "iopub.status.busy": "2026-05-21T21:48:50.405700Z", "iopub.status.idle": "2026-05-21T21:48:50.410959Z", "shell.execute_reply": "2026-05-21T21:48:50.410730Z", "shell.execute_reply.started": "2026-05-21T21:48:50.405780Z" } }, "outputs": [ { "data": { "text/plain": [ "Timer unit: 1e-09 s\n", "\n", "Total time: 0.001104 s\n", "File: /var/folders/hk/s8m0bblj0g10hw885gld52mc0000gn/T/ipykernel_47897/74316826.py\n", "Function: sum_of_lists at line 1\n", "\n", "Line # Hits Time Per Hit % Time Line Contents\n", "==============================================================\n", " 1 def sum_of_lists(n):\n", " 2 1 0.0 0.0 0.0 total = 0\n", " 3 6 1000.0 166.7 0.1 for i in range(5):\n", " 4 5 1038000.0 207600.0 94.0 ls = [j ^ (j >> i) for j in range(n)]\n", " 5 5 64000.0 12800.0 5.8 total += sum(ls)\n", " 6 1 1000.0 1000.0 0.1 return total" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%lprun -f sum_of_lists sum_of_lists(5000)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Das Ergebnis sieht ungefähr so aus:\n", "\n", "```\n", "Timer unit: 1e-06 s\n", "\n", "Total time: 0.015145 s\n", "File: \n", "Function: sum_of_lists at line 1\n", "\n", "Line # Hits Time Per Hit % Time Line Contents\n", "==============================================================\n", " 1 def sum_of_lists(N):\n", " 2 1 1.0 1.0 0.0 total = 0\n", " 3 6 11.0 1.8 0.1 for i in range(5):\n", " 4 5 14804.0 2960.8 97.7 L = [j ^ (j >> i) for j in range(N)]\n", " 5 5 329.0 65.8 2.2 total += sum(L)\n", " 6 1 0.0 0.0 0.0 return total\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Die Zeit wird in Mikrosekunden angegeben und wir können sehen, in welcher Zeile die Funktion die meiste Zeit verbringt. Eventuell können wir das Skript dann so ändern, dass die Effizienz der Funktion gesteigert werden kann.\n", "\n", "Weitere Informationen zu `%lprun` sowie die verfügbaren Optionen findet ihr in der IPython-Hilfefunktion `%lprun?`." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Speicherprofil erstellen: `%memit` und `%mprun`\n", "\n", "Ein weiterer Aspekt der Profilerstellung ist die Speichermenge, die eine Operation verwendet. Dies kann mit einer anderen IPython-Erweiterung ausgewertet werden, dem `memory_profiler`. Diese kann in eurem Kernel bereitgestellt werden mit\n", "\n", "```\n", "$ spack env activate python-374\n", "$ spack install py-memory-profiler ^python@3.7.4%gcc@9.1.0\n", "```\n", "\n", "Alternativ könnt ihr `memory-profiler` auch mit anderen Paketmanagern installieren, z.B.\n", "\n", "```\n", "$ uv add memory_profiler\n", "```" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "execution": { "iopub.execute_input": "2026-05-21T21:48:50.411458Z", "iopub.status.busy": "2026-05-21T21:48:50.411331Z", "iopub.status.idle": "2026-05-21T21:48:50.459012Z", "shell.execute_reply": "2026-05-21T21:48:50.458728Z", "shell.execute_reply.started": "2026-05-21T21:48:50.411449Z" } }, "outputs": [], "source": [ "%load_ext memory_profiler" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "execution": { "iopub.execute_input": "2026-05-21T21:48:50.459539Z", "iopub.status.busy": "2026-05-21T21:48:50.459448Z", "iopub.status.idle": "2026-05-21T21:48:51.003343Z", "shell.execute_reply": "2026-05-21T21:48:51.002938Z", "shell.execute_reply.started": "2026-05-21T21:48:50.459530Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "peak memory: 197.66 MiB, increment: 61.52 MiB\n" ] } ], "source": [ "%memit sum_of_lists(1000000)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Wir sehen, dass diese Funktion ungefähr 100 MB Speicher belegt.\n", "\n", "Für eine zeilenweise Beschreibung der Speichernutzung können wir die `%mprun`-Magie verwenden. Leider funktioniert diese Magie nur für Funktionen, die in separaten Modulen definiert sind, und nicht für das Notebook selbst. Daher erstellen wir zunächst mit der `%%file`-Magie ein einfaches Modul mit dem Namen `mprun_demo.py`, das unsere `sum_of_lists`-Funktion enthält." ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "execution": { "iopub.execute_input": "2026-05-21T21:48:51.004059Z", "iopub.status.busy": "2026-05-21T21:48:51.003955Z", "iopub.status.idle": "2026-05-21T21:48:51.007306Z", "shell.execute_reply": "2026-05-21T21:48:51.007033Z", "shell.execute_reply.started": "2026-05-21T21:48:51.004043Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Writing mprun_demo.py\n" ] } ], "source": [ "%%file mprun_demo.py\n", "from memory_profiler import profile\n", "\n", "@profile\n", "def my_func():\n", " a = [1] * (10 ** 6)\n", " b = [2] * (2 * 10 ** 7)\n", " del b\n", " return a" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Filename: /srv/jupyter/jupyter-tutorial-de/docs/performance/mprun_demo.py\n", "\n", "Line # Mem usage Increment Line Contents\n", "================================================\n", " 3 67.3 MiB 67.3 MiB @profile\n", " 4 def my_func():\n", " 5 74.8 MiB 7.5 MiB a = [1] * (10 ** 6)\n", " 6 227.4 MiB 152.6 MiB b = [2] * (2 * 10 ** 7)\n", " 7 74.9 MiB 0.0 MiB del b\n", " 8 74.9 MiB 0.0 MiB return a\n", "\n", "\n", "\n" ] } ], "source": [ "%mprun -f my_func my_func()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Hier zeigt die `Increment`-Spalte, wie stark sich jede Zeile auf den gesamten Speicherverbrauch auswirkt: Beachtet, dass wir beim Berechnen von `b` etwa 160 MB Speicher zusätzlich benötigen; dieser wird aber durch das Löschen von `b` nicht wieder freigegeben.\n", "\n", "Weitere Informationen zu `%memit` und `%mprun` sowie deren Optionen findet ihr in der IPython-Hilfe mit `%memit?`." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## pyheatmagic\n", "\n", "[pyheatmagic](https://github.com/csurfer/pyheatmagic) ist eine Erweiterung, die den IPython-Magic-Befehl `%%heat` zum Anzeigen von Python-Code als Heatmap mit [Py-Heat](https://github.com/csurfer/pyheat) erlaubt.\n", "\n", "Sie lässt sich einfach im Kernel installieren mit\n", "\n", "```bash\n", "$ uv add py-heat-magic\n", "Installing py-heat-magic…\n", "…```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Laden der Extension in IPython" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "execution": { "iopub.execute_input": "2026-05-21T21:48:51.007854Z", "iopub.status.busy": "2026-05-21T21:48:51.007740Z", "iopub.status.idle": "2026-05-21T21:48:51.301649Z", "shell.execute_reply": "2026-05-21T21:48:51.301369Z", "shell.execute_reply.started": "2026-05-21T21:48:51.007846Z" } }, "outputs": [], "source": [ "%load_ext heat" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Anzeigen der Heatmap" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "execution": { "iopub.execute_input": "2026-05-21T21:48:51.302108Z", "iopub.status.busy": "2026-05-21T21:48:51.302006Z", "iopub.status.idle": "2026-05-21T21:48:51.433569Z", "shell.execute_reply": "2026-05-21T21:48:51.433196Z", "shell.execute_reply.started": "2026-05-21T21:48:51.302100Z" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/veit/cusy/trn/jupyter-tutorial/uvenvs/py313/.venv/lib/python3.13/site-packages/pyheat/pyheat.py:158: UserWarning: set_ticklabels() should only be used with a fixed number of ticks, i.e. after set_ticks() or using a FixedLocator.\n", " self.ax.set_yticklabels(row_labels, minor=False)\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%%heat\n", "\n", "\n", "def powfun(a, b):\n", " \"\"\"Method to raise a to power b using pow() function.\"\"\"\n", " return pow(a, b)\n", "\n", "\n", "def powop(a, b):\n", " \"\"\"Method to raise a to power b using ** operator.\"\"\"\n", " return a**b\n", "\n", "\n", "def powmodexp(a, b):\n", " \"\"\"Method to raise a to power b using modular exponentiation.\"\"\"\n", " base = a\n", " res = 1\n", " while b > 0:\n", " if b & 1:\n", " res *= base\n", " base *= base\n", " b >>= 1\n", " return res\n", "\n", "\n", "def main():\n", " \"\"\"Test function.\"\"\"\n", " a, b = 2377757, 773\n", " pow_function = powfun(a, b)\n", " pow_operator = powop(a, b)\n", " pow_modular_exponentiation = powmodexp(a, b)\n", "\n", "\n", "if __name__ == \"__main__\":\n", " main()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Alternativ kann die Heatmap auch als Datei gespeichert werden, z.B. mit\n", "```\n", "%%heat -o pow-heatmap.png\n", "```" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3.13 Kernel", "language": "python", "name": "python313" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.13.0" }, "latex_envs": { "LaTeX_envs_menu_present": true, "autoclose": false, "autocomplete": true, "bibliofile": "biblio.bib", "cite_by": "apalike", "current_citInitial": 1, "eqLabelWithNumbers": true, "eqNumInitial": 1, "hotkeys": { "equation": "Ctrl-E", "itemize": "Ctrl-I" }, "labels_anchors": false, "latex_user_defs": false, "report_style_numbering": false, "user_envs_cfg": false }, "varInspector": { "cols": { "lenName": 16, "lenType": 16, "lenVar": 40 }, "kernels_config": { "python": { "delete_cmd_postfix": "", "delete_cmd_prefix": "del ", "library": "var_list.py", "varRefreshCmd": "print(var_dic_list())" }, "r": { "delete_cmd_postfix": ") ", "delete_cmd_prefix": "rm(", "library": "var_list.r", "varRefreshCmd": "cat(var_dic_list()) " } }, "types_to_exclude": [ "module", "function", "builtin_function_or_method", "instance", "_Feature" ], "window_display": false }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": {}, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 4 }