{ "metadata": { "name": "9932_06_01" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "Chapter 6, example 1\n", "====================\n", "\n", "**Note**: the profilers uses here display their results in an external window in the notebook, so that these results are not shown here. You will need to execute this notebook yourself if you want to see the actual outputs.", "\n", "Here we illustrate how to use some line-by-line profilers on a function defined in `myscript.py`:\n", "\n", " import numpy as np\n", " import matplotlib.pyplot as plt\n", " def myfun():\n", " dx = np.random.randn(1000, 10000)\n", " x = np.sum(dx, axis=0)\n", " plt.hist(x, bins=np.linspace(-100, 100, 20))\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We first need to load the extensions provided by the `line_profiler` and `memory_profiler` modules." ] }, { "cell_type": "code", "collapsed": false, "input": [ "%load_ext line_profiler" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "%load_ext memory_profiler" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We import and execute the function once." ] }, { "cell_type": "code", "collapsed": false, "input": [ "from myscript import myfun" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "myfun()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAYEAAAD9CAYAAABazssqAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAGVNJREFUeJzt3V9sW+X9x/GPu3hj0pquHcRhdjdPjTPXJQ0dremQOnkU\nh1KpXgYsI51oaKkmtdpUNsSfm23JJJp0CAkGys2UsqhcpL3YkgiVKDDJ7H8C7cQkjIjFXC12EmuQ\npgkrm9dwfhcF/0ibBHJ8Ejt53i/JUvLY/ubrpz3++ByfPy7LsiwBAIy0qtgNAACKhxAAAIMRAgBg\nMEIAAAxGCACAwQgBADDYvCFw4MABeTwe1dTUXHXfE088oVWrVml8fDw/1traqkAgoGAwqP7+/vz4\nmTNnVFNTo0AgoCNHjjjYPgCgEPOGwP79+9XX13fV+PDwsF588UV9+ctfzo8lEgmdPHlSiURCfX19\nOnz4sD48BOHQoUPq6OhQMplUMpmctSYAYOnNGwI7duzQ2rVrrxr/8Y9/rF/84hczxnp6etTY2Ci3\n2y2/36+qqioNDAxodHRUU1NTCofDkqR9+/apu7vbwZcAALBrwd8J9PT0yOfzafPmzTPGR0ZG5PP5\n8r/7fD5lMpmrxr1erzKZTAEtAwCcUraQB1+8eFFHjx7Viy++mB9z8qwTLpfLsVoAYBK778ULWhN4\n6623dO7cOdXW1uorX/mK0um0brrpJmWzWXm9Xg0PD+cfm06n5fP55PV6lU6nZ4x7vd45/4ZlWdwc\nuv3sZz8reg8r5cZcMp+lfCvEgkKgpqZG2WxWqVRKqVRKPp9PZ8+elcfjUSwWU1dXl3K5nFKplJLJ\npMLhsCorK1VeXq6BgQFZlqUTJ06ovr6+oKYBAM6YNwQaGxt1yy23aGhoSOvXr9ezzz474/6Pbr4J\nhUJqaGhQKBTSHXfcofb29vz97e3tOnjwoAKBgKqqqrRr165FeCkAgIVyWYWuSzjI5XIVvGqD/xeP\nxxWJRIrdxorAXDqL+XRWIe+dhAAALHOFvHdy2ggAMBghAAAGIwQAwGCEAAAYjBAAAIMRAgBgMEIA\nxisvXyeXy1Xwrbx8XbFfCrBgHCcA410+st2J/3f8/0VxFPLeuaCziAKlprx8naamzhe7DWDZYk0A\ny5ozn+JZE8DyxhHDAABbCAEAMBghAAAGIwQAwGCEAAAYjBAAAIMRAgBgMEIAAAzGEcOAY8o+OHit\nMKtXr9Xk5LgD/QAfjyOGsayV2hHDHHmMYuCIYQCALYQAABhs3hA4cOCAPB6Pampq8mMPPfSQNm7c\nqNraWt155526cOFC/r7W1lYFAgEFg0H19/fnx8+cOaOamhoFAgEdOXJkEV4GAMCOeUNg//796uvr\nmzFWV1en119/Xa+99pqqq6vV2toqSUokEjp58qQSiYT6+vp0+PDh/DaqQ4cOqaOjQ8lkUslk8qqa\nAIDimDcEduzYobVr184Yi0ajWrXq8tNuvvlmpdNpSVJPT48aGxvldrvl9/tVVVWlgYEBjY6Oampq\nSuFwWJK0b98+dXd3L8ZrAQAsUEG7iB4/flyNjY2SpJGREW3fvj1/n8/nUyaTkdvtls/ny497vV5l\nMpk5azY3N+d/jkQiikQihbQIACtOPB5XPB53pJbtEHjsscf06U9/Wnv37nWkkQ99NAQAAFe78gNy\nS0uL7Vq2QuDXv/61Tp8+rd/97nf5Ma/Xq+Hh4fzv6XRaPp9PXq83v8now3Gv12u7YQCAcxa8i2hf\nX58ef/xx9fT06JprrsmPx2IxdXV1KZfLKZVKKZlMKhwOq7KyUuXl5RoYGJBlWTpx4oTq6+sdfREA\nAHvmXRNobGzUyy+/rLffflvr169XS0uLWltblcvlFI1GJUlf//rX1d7erlAopIaGBoVCIZWVlam9\nvT1/CH17e7vuu+8+vffee9q9e7d27dq1+K8MAPCxOG0EljVOGwFw2ggAgE2EAAAYjBAAAIMRAgBg\nMEIAAAxGCACAwQgBADAYIQAABiMEAMBghAAAGIwQAACDEQIAYDBCAAAMRggAgMEKusYwYFd5+TpN\nTZ0vdhuA8bieAIrCmesASM6cw7+Uerlch+UAC8H1BAAAthACAGAwQgAADEYIAIDBCAEAMBghAAAG\n4zgBoOSUfbALrX2rV6/V5OS4Q/1gJZt3TeDAgQPyeDyqqanJj42Pjysajaq6ulp1dXWamJjI39fa\n2qpAIKBgMKj+/v78+JkzZ1RTU6NAIKAjR44swssAVpJLuny8gf0bB+Lhk5o3BPbv36++vr4ZY21t\nbYpGoxoaGtLOnTvV1tYmSUokEjp58qQSiYT6+vp0+PDh/MELhw4dUkdHh5LJpJLJ5FU1AQDFMW8I\n7NixQ2vXrp0x1tvbq6amJklSU1OTuru7JUk9PT1qbGyU2+2W3+9XVVWVBgYGNDo6qqmpKYXDYUnS\nvn378s8BABTXgr8TyGaz8ng8kiSPx6NsNitJGhkZ0fbt2/OP8/l8ymQycrvd8vl8+XGv16tMJjNn\n/ebm5vzPkUhEkUhkoS0CwIoWj8cVj8cdqVXQF8Mul6vgL7Cu9NEQAABc7coPyC0tLbZrLXgXUY/H\no7GxMUnS6OioKioqJF3+hD88PJx/XDqdls/nk9frVTqdnjHu9XptNwwAcM6CQyAWi6mzs1OS1NnZ\nqfr6+vx4V1eXcrmcUqmUksmkwuGwKisrVV5eroGBAVmWpRMnTuSfAwAornk3BzU2Nurll1/W22+/\nrfXr1+vnP/+5Hn30UTU0NKijo0N+v1+nTp2SJIVCITU0NCgUCqmsrEzt7e35TUXt7e2677779N57\n72n37t3atWvX4r8yAMDH4noCKAquJ7DYdViWTML1BAAAthACAGAwQgAADEYIAIDBCAEAMBghAAAG\nIwQAwGCEAAAYjBAAAIMRAgBgMEIAAAxGCACAwQgBADAYIQAABiMEAMBghAAAGIwQAACDEQIAYDBC\nAAAMRggAgMEIAQAwGCEAAAYjBADAYLZDoLW1VZs2bVJNTY327t2r//73vxofH1c0GlV1dbXq6uo0\nMTEx4/GBQEDBYFD9/f2ONA8AKIzLsixroU86d+6cbr31Vr3xxhv6zGc+o+9+97vavXu3Xn/9dV17\n7bV6+OGHdezYMZ0/f15tbW1KJBLau3evXnnlFWUyGd12220aGhrSqlUzM8jlcslGO1iGXC6XJCf+\nrZ2oU0q9OFWHZckkhbx32loTKC8vl9vt1sWLF3Xp0iVdvHhRX/ziF9Xb26umpiZJUlNTk7q7uyVJ\nPT09amxslNvtlt/vV1VVlQYHB201DABwTpmdJ61bt04PPvigvvSlL+mzn/2sbr/9dkWjUWWzWXk8\nHkmSx+NRNpuVJI2MjGj79u355/t8PmUymVlrNzc353+ORCKKRCJ2WgSAFSsejysejztSy1YIvPXW\nW3ryySd17tw5rVmzRt/5znf03HPPzXiMy+X6YJV/dnPd99EQQGkqL1+nqanzxW4DMNaVH5BbWlps\n17K1OejVV1/VLbfcoi984QsqKyvTnXfeqb/85S+qrKzU2NiYJGl0dFQVFRWSJK/Xq+Hh4fzz0+m0\nvF6v7aZRXJcDwCrwhsVVlv8gVsitvHxdsV8IFpmtEAgGg/rrX/+q9957T5Zl6aWXXlIoFNKePXvU\n2dkpSers7FR9fb0kKRaLqaurS7lcTqlUSslkUuFw2LlXAeAKl1R4UFus8RnA1uag2tpa7du3T1u3\nbtWqVav0ta99Td///vc1NTWlhoYGdXR0yO/369SpU5KkUCikhoYGhUIhlZWVqb29fd5NRQCApWFr\nF9HFwi6iy4Mzu3eW1u6UpdOLU3Wc64VlsvQt+S6iAICVgRAAAIMRAgBgMEIAAAxGCACAwQgBADAY\nIQAABiMEAMBghAAAGIwQAACDEQIAYDBCAAAMRggAgMEIAQAwGCEAAAYjBADAYIQAABiMEAAAgxEC\nAGAwQgAADEYIAIDBCAEAMBghAAAGsx0CExMTuvvuu7Vx40aFQiENDAxofHxc0WhU1dXVqqur08TE\nRP7xra2tCgQCCgaD6u/vd6R5AEBhbIfAkSNHtHv3br3xxhv6+9//rmAwqLa2NkWjUQ0NDWnnzp1q\na2uTJCUSCZ08eVKJREJ9fX06fPiw3n//fcdeBADAHlshcOHCBf3hD3/QgQMHJEllZWVas2aNent7\n1dTUJElqampSd3e3JKmnp0eNjY1yu93y+/2qqqrS4OCgQy8BAGBXmZ0npVIpXXfdddq/f79ee+01\n3XTTTXryySeVzWbl8XgkSR6PR9lsVpI0MjKi7du355/v8/mUyWRmrd3c3Jz/ORKJKBKJ2GkRAFas\neDyueDzuSC1bIXDp0iWdPXtWzzzzjLZt26YHHnggv+nnQy6XSy6Xa84ac9330RAAAFztyg/ILS0t\ntmvZ2hzk8/nk8/m0bds2SdLdd9+ts2fPqrKyUmNjY5Kk0dFRVVRUSJK8Xq+Gh4fzz0+n0/J6vbab\nBgA4w1YIVFZWav369RoaGpIkvfTSS9q0aZP27Nmjzs5OSVJnZ6fq6+slSbFYTF1dXcrlckqlUkom\nkwqHww69BACAXbY2B0nS008/re9973vK5XLasGGDnn32WU1PT6uhoUEdHR3y+/06deqUJCkUCqmh\noUGhUEhlZWVqb2+fd1MRAGBpuCzLsordxIdcLpdKqB3M4XKAF/rv5EQNp+qUUi9O1XGqF7ekSwVX\nWb16rSYnxwtvB7Mq5L3T9poAABNckhNhMjXFmn+p4rQRAGAwQgAADEYIAIDBCAEAMBghAAAGIwQA\nwGCEAAAYjOMEDFJevk5TU+eL3QaAEsIRwwZx5khfqbSOaF1pvThVp5R6uVyHZXvxFPLeyeYgADAY\nIQAABiMEAMBghAAAGIwQAACDEQIAYDBCAAAMRggAgMEIAQAwGCEAAAYjBADAYIQAABiMEAAAgxUU\nAtPT09qyZYv27NkjSRofH1c0GlV1dbXq6uo0MTGRf2xra6sCgYCCwaD6+/sL6xoA4IiCQuCpp55S\nKBT64BTFUltbm6LRqIaGhrRz5061tbVJkhKJhE6ePKlEIqG+vj4dPnxY77//fuHdAwAKYjsE0um0\nTp8+rYMHD+bPY93b26umpiZJUlNTk7q7uyVJPT09amxslNvtlt/vV1VVlQYHBx1oHwBQCNtXFvvR\nj36kxx9/XJOTk/mxbDYrj8cjSfJ4PMpms5KkkZERbd++Pf84n8+nTCYza93m5ub8z5FIRJFIxG6L\nALAixeNxxeNxR2rZCoHnn39eFRUV2rJly5yNuFyu/Gaiue6fzUdDAABwtSs/ILe0tNiuZSsE/vzn\nP6u3t1enT5/Wf/7zH01OTuree++Vx+PR2NiYKisrNTo6qoqKCkmS1+vV8PBw/vnpdFper9d20wAA\nZ9j6TuDo0aMaHh5WKpVSV1eXbr31Vp04cUKxWEydnZ2SpM7OTtXX10uSYrGYurq6lMvllEqllEwm\nFQ6HnXsVAABbbH8n8FEfbtp59NFH1dDQoI6ODvn9fp06dUqSFAqF1NDQoFAopLKyMrW3t8+7qQgA\nsDRclt1L1C8Cl8ulEmpnxbkcvE7MrxN16GVx65RSL5frsGwvnkLeOzliGAAM5sjmIACYX1nBm4BX\nr16ryclxh/rBhwgBAEvgkgrdrDQ1xfeIi4HNQQBgMEIAAAxGCACAwQgBADAYIQAABiMEAMBg7CK6\nDJSXr9PU1PlitwFgBeK0EctAaZ3uwak69LK4dUqpF6fq8P4wF04bAQCwhRAAAIMRAgBgMEIAAAxG\nCACAwQgBADAYIQAABiMEAMBghAAAGIwQAACDEQIAYDBCAAAMZisEhoeH9c1vflObNm3SDTfcoF/+\n8peSpPHxcUWjUVVXV6uurk4TExP557S2tioQCCgYDKq/v9+Z7gEABbF1FtGxsTGNjY3pxhtv1Lvv\nvqubbrpJ3d3devbZZ3Xttdfq4Ycf1rFjx3T+/Hm1tbUpkUho7969euWVV5TJZHTbbbdpaGhIq1bN\nzCDOIjo7ziJqUi9O1SmlXpyqw/vDXJb8LKKVlZW68cYbJUmf+9zntHHjRmUyGfX29qqpqUmS1NTU\npO7ubklST0+PGhsb5Xa75ff7VVVVpcHBQVsNAwCcU/BFZc6dO6e//e1vuvnmm5XNZuXxeCRJHo9H\n2WxWkjQyMqLt27fnn+Pz+ZTJZGat19zcnP85EokoEokU2iIArCjxeFzxeNyRWgWFwLvvvqu77rpL\nTz31lFavXj3jPpfL9cFmjNnNdd9HQ2Al4KpgAJx25QfklpYW27Vs7x30v//9T3fddZfuvfde1dfX\nS7r86X9sbEySNDo6qoqKCkmS1+vV8PBw/rnpdFper9d208vJ5QCwCrwBwOKwFQKWZen+++9XKBTS\nAw88kB+PxWLq7OyUJHV2dubDIRaLqaurS7lcTqlUSslkUuFw2IH2AQCFsLV30B//+Ed94xvf0ObN\nm/ObdVpbWxUOh9XQ0KB//vOf8vv9OnXqlD7/+c9Lko4eParjx4+rrKxMTz31lG6//farm1mBewc5\ns2dPKe2h4VQdelncOqXUi1N13JIuFdzJ6tVrNTk5XnCdUlLIeycXml9khAC9FKdOKfXiVB3nelmJ\n7zNcaB4AsGCEAAAYjBAAAIMRAgBgMEIAAAxGCACAwQgBADAYIQAABiMEAMBghAAAGIwQAACDFXxR\nmZWK6wAAMAEhMIf/vw5Aoea+sA6AYiib94JXn8RKOhMpIQDAMJdU6Ae8qamV8+GO7wQAwGCEAAAY\njBAAAIMRAgBgMEIAAAy24vYOYv9+AIuv8N1MpdLY1XTFXWjemQu7Syv1AtulU4deFrdOKfXiVJ2V\n2YsTb8GFvHeW3JrAK6+8UuwWAMAYS7om0NfXpwceeEDT09M6ePCgHnnkkZnNuFxas2ar7fqWNa3J\nyb+pdD4tOFXHbo24pIjDvThVZ7n1EtfMuVysXpyqU0q9zFYnro+fz6XqpVg1LtcxZk1genpaP/jB\nD/TSSy/J6/Vq27ZtisVi2rhx44zHXbhQyJrApKQ1BfW5ssS18AUNs4uLuXRSXMyn5NR3C4VYsr2D\nBgcHVVVVJb/fL7fbrXvuuUc9PT1L9ecBoAR9eAqLQm/2LdmaQCaT0fr16/O/+3w+DQwMXPW4NWv2\n2P4blvU/TU7afjoAGGfJQuCTrvJcuPC8E3/NgRqlVsdujRaH6lypmK9pMep8khpXzqXdOp/ESpvf\n2ep8kvn8uBp2rcT5tWfJQsDr9Wp4eDj/+/DwsHw+34zHlNDeqgBghCX7TmDr1q1KJpM6d+6ccrmc\nTp48qVgstlR/HgAwiyVbEygrK9Mzzzyj22+/XdPT07r//vuv2jMIALC0lvTcQXfccYfefPNNtba2\n6rnnntOnPvUpnT17dsZjWltbFQgEFAwG1d/fnx8/c+aMampqFAgEdOTIkaVse1lpbm6Wz+fTli1b\ntGXLFr3wwgv5++aaW8yvr69PwWBQgUBAx44dK3Y7y47f79fmzZu1ZcsWhcNhSdL4+Lii0aiqq6tV\nV1eniYmJIndZug4cOCCPx6Oampr82Hzzt+Dl3CqCN954w3rzzTetSCRinTlzJj/++uuvW7W1tVYu\nl7NSqZS1YcMG6/3337csy7K2bdtmDQwMWJZlWXfccYf1wgsvFKP1ktfc3Gw98cQTV43PNrfT09NF\n6HB5uXTpkrVhwwYrlUpZuVzOqq2ttRKJRLHbWlb8fr/1zjvvzBh76KGHrGPHjlmWZVltbW3WI488\nUozWloXf//731tmzZ60bbrghPzbX/NlZzotyFtFgMKjq6uqrxnt6etTY2Ci32y2/36+qqioNDAxo\ndHRUU1NT+U8R+/btU3d391K3vWxYs3zBPtvcDg4OFqG75YXjW5xx5f/J3t5eNTU1SZKamppYnuex\nY8cOrV27dsbYXPNnZzkvqVNJj4yMzNhjyOfzKZPJXDXu9XqVyWSK0eKy8PTTT6u2tlb3339/fjVx\nrrnF/GY7voV5WxiXy6XbbrtNW7du1a9+9StJUjablcfjkSR5PB5ls9litrjszDV/dpbzRftiOBqN\namxs7Krxo0ePas8e+weEYe65feyxx3To0CH99Kc/lST95Cc/0YMPPqiOjo5Z6xT7cPXlgDkq3J/+\n9Cddf/31+te//qVoNKpgMDjjfpfLxTwX4OPm7+PmdtFC4MUXX1zwc648liCdTsvn88nr9SqdTs8Y\n93q9jvS5HH3SuT148GA+cGebW5Pn8JP6JMe3YH7XX3+9JOm6667Tt7/9bQ0ODsrj8WhsbEyVlZUa\nHR1VRUVFkbtcXuaaPzvLedE3B310W2EsFlNXV5dyuZxSqZSSyaTC4bAqKytVXl6ugYEBWZalEydO\nqL6+vohdl67R0dH8z7/97W/zexTMNbeYH8e3FObixYuampqSJP373/9Wf3+/ampqFIvF1NnZKUnq\n7OxkeV6guebP1nK+ON9nz+83v/mN5fP5rGuuucbyeDzWrl278vc99thj1oYNG6yvfvWrVl9fX378\n1VdftW644QZrw4YN1g9/+MNitL0s3HvvvVZNTY21efNm61vf+pY1NjaWv2+uucX8Tp8+bVVXV1sb\nNmywjh49Wux2lpV//OMfVm1trVVbW2tt2rQpP3/vvPOOtXPnTisQCFjRaNQ6f/58kTstXffcc491\n/fXXW2632/L5fNbx48fnnb+FLucldWUxAMDSKvrmIABA8RACAGAwQgAADEYIAIDBCAEAMBghAAAG\n+z//2KZJFdb2lQAAAABJRU5ErkJggg==\n" } ], "prompt_number": 4 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, let's profile it line by line with `%lprun`." ] }, { "cell_type": "code", "collapsed": false, "input": [ "%lprun -f myfun myfun()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "\n" ] }, { "output_type": "display_data", "png": "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\nZKWHN90AAAAASUVORK5CYII=\n" } ], "prompt_number": 5 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's find out the amount of memory used by this function with `%memit`." ] }, { "cell_type": "code", "collapsed": false, "input": [ "%memit -i myfun()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "maximum of 1: 125.195312 MB per loop\n" ] }, { "output_type": "display_data", "png": "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\nE3C73XrhhRd077336vLly9q3b9+UD4UBAPNrXi8bcd999+ntt99WS0uLXnrpJX3iE5/Q6dOnJz2m\npaVFwWBQoVBIfX19hfFTp06purpawWBQhw4dms+2F5Wmpib5/X5t2LBBGzZs0Msvv1y4b7q5xcx6\ne3sVCoUUDAZ15MiRUrez6AQCAa1fv14bNmxQJBKRJI2NjSkWi6mqqkq1tbUaHx8vcZcL1969e+X1\nelVdXV0Ym2n+Zr2dWyVw5swZ6+2337ai0ah16tSpwvhbb71l1dTUWPl83kqn09aaNWusK1euWJZl\nWZs2bbL6+/sty7Ks++67z3r55ZdL0fqC19TUZD3zzDNTxm80t5cvXy5Bh4vLpUuXrDVr1ljpdNrK\n5/NWTU2NlUwmS93WohIIBKz33ntv0thjjz1mHTlyxLIsy2ptbbWeeOKJUrS2KPzud7+zTp8+bd12\n222Fsenmz852XpILyIVCIVVVVU0Z7+7uVkNDgzwejwKBgCorK9Xf36+RkRFNTEwUXkXs3r1bXV1d\n8932omHd4AP2G83twMBACbpbXD58fovH4ymc34LZuf7/ZE9PjxobGyVJjY2NbM8z2LJli1asWDFp\nbLr5s7OdL6iriA4PD086Ysjv9yubzU4Z9/l8ymazpWhxUXj++edVU1Ojffv2Fd4mTje3mNmNzm9h\n3mbH5XLpnnvu0caNG/WLX/xCkpTL5eT1eiVJXq9XuVyulC0uOtPNn53tfM4+GI7FYhodHZ0yfvjw\nYe3YYf+EMEw/t0899ZQOHDigH//4x5KkH/3oR3r00UfV3t5+wzqlvmbJYsAcFe+Pf/yjVq1apX/+\n85+KxWIKhUKT7ne5XMxzET5q/j5qbucsBF555ZVZL3P9uQSZTEZ+v18+n0+ZTGbSuM/nc6TPxejj\nzu3+/fsLgXujuTV5Dj+uj3N+C2a2atUqSdKtt96qb37zmxoYGJDX69Xo6KgqKio0MjKi8vLyEne5\nuEw3f3a285LvDvrwvsJ4PK7Ozk7l83ml02mlUilFIhFVVFSorKxM/f39sixLx44dU11dXQm7XrhG\nRkYKP//6178uHFEw3dxiZpzfUpyLFy9qYmJCkvSvf/1LfX19qq6uVjweV0dHhySpo6OD7XmWpps/\nW9v53HyePbNf/epXlt/vt2666SbL6/Va27ZtK9z31FNPWWvWrLG+/OUvW729vYXxN954w7rtttus\nNWvWWN///vdL0faisGvXLqu6utpav3699Y1vfMMaHR0t3Dfd3GJmJ0+etKqqqqw1a9ZYhw8fLnU7\ni8rf//53q6amxqqpqbHWrVtXmL/33nvP2rp1qxUMBq1YLGadO3euxJ0uXA899JC1atUqy+PxWH6/\n3zp69OiM8zfb7XxBfakMAGB+lXx3EACgdAgBADAYIQAABiMEAMBghAAAGIwQAACD/R+hn2U6X9G0\nYQAAAABJRU5ErkJggg==\n" } ], "prompt_number": 6 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can also do line-by-line profiling with memory consumption, using `%mprun`." ] }, { "cell_type": "code", "collapsed": false, "input": [ "%mprun -f myfun myfun()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "('',)\n" ] }, { "output_type": "display_data", "png": "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\n" } ], "prompt_number": 7 } ], "metadata": {} } ] }