Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save mprostock/2850f3cd465155689052f0fa3a177a50 to your computer and use it in GitHub Desktop.
Save mprostock/2850f3cd465155689052f0fa3a177a50 to your computer and use it in GitHub Desktop.
"Memory Leak" copy-on-access problem in pytorch dataloaders
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Dataloader \"memory leak\" problems (that are no memory leak!) #13246\n",
"Notebook for demonstration purposes of bug https://github.com/pytorch/pytorch/issues/13246\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"from torch.utils.data import Dataset, DataLoader\n",
"import numpy as np\n",
"import torch\n",
"import psutil\n",
"import uuid\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Set up Dataset\n",
"comment out either the data_np with dtype object or string to see the difference.\n",
"\n",
"The [reproduction example](https://github.com/pytorch/pytorch/issues/13246#issuecomment-436632186) by bfreskura in the bug thread showed the difference between a regular python list and a numpy array.\n",
"This aims to show that the problem is not (only) the python list itself, the same happens in a numpy array of type object.\n",
"Python lists store only references to the objects, the objects are kept separately in memory. Every\n",
"object has a refcount, therefore every item in the list has a refcount.\n",
"\n",
"Numpy arrays (of standard np types) are stored as continuous blocks in memory and are only ONE object with one\n",
"refcount. \n",
"\n",
"This changes if you make the numpy array explicitly of type object, which makes it start behaving like a regular\n",
"python list (only storing references to (string) objects). The same \"problems\" with memory consumption now appear.\n",
"\n",
"This would explain, why with regular lists (or numpy arrays of type object) we see the \"memory leak\", which actually\n",
"is the copy-on-acces problem of forked python processes due to changing refcounts, not a memory leak.\n",
"\n",
"So the problem probably (often) has got nothing to do with tensors or actual torch objects, but rather with the lists of filenames and dicts of labels, that are generally used within dataloaders/datasets.\n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Size in Mem: 76.2939453125\n",
"Datatype of nparray: object\n",
"MemFlags: C_CONTIGUOUS : True\n",
" F_CONTIGUOUS : True\n",
" OWNDATA : True\n",
" WRITEABLE : True\n",
" ALIGNED : True\n",
" WRITEBACKIFCOPY : False\n",
" UPDATEIFCOPY : False\n",
"Size of item: 8\n",
"np strides: (8,)\n"
]
}
],
"source": [
"class DataIter(Dataset):\n",
" def __init__(self):\n",
" \n",
" self.data_np = np.array([str(uuid.uuid4()) for i in range(10000000)], dtype=object)\n",
" # self.data_np = np.array([str(uuid.uuid4()) for i in range(10000000)], dtype=np.string_)\n",
" \n",
" print('Size in Mem:', self.data_np.nbytes/1024**2)\n",
" print('Datatype of nparray:',self.data_np.dtype)\n",
" print('MemFlags:', self.data_np.flags)\n",
" print('Size of item:', self.data_np.itemsize)\n",
" #print('Mem adress':, self.data_np.data)\n",
" print('np strides:', self.data_np.strides) \n",
" \n",
" def __len__(self):\n",
" return len(self.data_np)\n",
"\n",
" def __getitem__(self, idx):\n",
" data = self.data_np[idx]\n",
" return 42\n",
"\n",
"\n",
"train_data = DataIter()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" 0 - 15.2 - 11.35 - 13.17 - 1.93\n",
" 1000 - 16.5 - 11.15 - 12.97 - 2.13\n",
" 2000 - 17.6 - 10.97 - 12.80 - 2.30\n",
" 3000 - 18.8 - 10.79 - 12.62 - 2.48\n",
" 4000 - 19.9 - 10.62 - 12.45 - 2.65\n",
" 5000 - 21.0 - 10.45 - 12.27 - 2.83\n",
" 6000 - 22.0 - 10.29 - 12.11 - 2.99\n",
" 7000 - 23.1 - 10.13 - 11.96 - 3.15\n",
" 8000 - 24.1 - 9.98 - 11.80 - 3.30\n",
" 9000 - 25.0 - 9.82 - 11.65 - 3.45\n",
" 10000 - 26.0 - 9.68 - 11.50 - 3.60\n",
" 11000 - 26.9 - 9.54 - 11.36 - 3.74\n",
" 12000 - 27.8 - 9.40 - 11.23 - 3.88\n",
" 13000 - 28.6 - 9.27 - 11.09 - 4.01\n",
" 14000 - 29.5 - 9.13 - 10.95 - 4.15\n",
" 15000 - 30.3 - 9.01 - 10.83 - 4.27\n",
" 16000 - 31.1 - 8.88 - 10.71 - 4.39\n",
" 17000 - 31.8 - 8.77 - 10.59 - 4.51\n",
" 18000 - 32.6 - 8.64 - 10.47 - 4.63\n",
" 19000 - 33.3 - 8.54 - 10.36 - 4.74\n",
" 20000 - 34.0 - 8.43 - 10.25 - 4.85\n",
" 21000 - 34.7 - 8.32 - 10.15 - 4.95\n",
" 22000 - 35.4 - 8.21 - 10.04 - 5.06\n",
" 23000 - 36.0 - 8.12 - 9.94 - 5.16\n",
" 24000 - 36.6 - 8.02 - 9.84 - 5.26\n",
" 25000 - 37.3 - 7.92 - 9.75 - 5.35\n",
" 26000 - 37.9 - 7.83 - 9.65 - 5.45\n",
" 27000 - 38.4 - 7.74 - 9.57 - 5.53\n",
" 28000 - 39.0 - 7.65 - 9.48 - 5.62\n",
" 29000 - 39.5 - 7.57 - 9.40 - 5.71\n",
" 30000 - 40.1 - 7.49 - 9.31 - 5.79\n",
" 31000 - 40.6 - 7.40 - 9.22 - 5.88\n",
" 32000 - 41.1 - 7.33 - 9.15 - 5.95\n",
" 33000 - 41.6 - 7.25 - 9.08 - 6.02\n",
" 34000 - 42.0 - 7.18 - 9.01 - 6.10\n",
" 35000 - 42.5 - 7.10 - 8.93 - 6.17\n",
" 36000 - 43.0 - 7.04 - 8.86 - 6.24\n",
" 37000 - 43.4 - 6.97 - 8.80 - 6.31\n",
" 38000 - 43.8 - 6.91 - 8.73 - 6.37\n",
" 39000 - 44.2 - 6.84 - 8.67 - 6.43\n",
" 40000 - 44.6 - 6.78 - 8.61 - 6.50\n",
" 41000 - 45.0 - 6.72 - 8.55 - 6.56\n",
" 42000 - 45.4 - 6.66 - 8.49 - 6.61\n",
" 43000 - 45.7 - 6.60 - 8.43 - 6.67\n",
" 44000 - 46.1 - 6.54 - 8.37 - 6.73\n",
" 45000 - 46.4 - 6.50 - 8.32 - 6.78\n",
" 46000 - 46.8 - 6.44 - 8.27 - 6.83\n",
" 47000 - 47.1 - 6.39 - 8.22 - 6.88\n",
" 48000 - 47.4 - 6.34 - 8.17 - 6.93\n",
" 49000 - 47.7 - 6.30 - 8.12 - 6.98\n",
" 50000 - 48.0 - 6.25 - 8.08 - 7.02\n",
" 51000 - 48.3 - 6.21 - 8.03 - 7.07\n",
" 52000 - 48.6 - 6.16 - 7.99 - 7.11\n",
" 53000 - 48.9 - 6.11 - 7.94 - 7.16\n",
" 54000 - 49.1 - 6.08 - 7.90 - 7.20\n",
" 55000 - 49.4 - 6.04 - 7.87 - 7.24\n",
" 56000 - 49.6 - 6.00 - 7.83 - 7.28\n",
" 57000 - 49.9 - 5.96 - 7.79 - 7.31\n",
" 58000 - 50.1 - 5.92 - 7.75 - 7.35\n",
" 59000 - 50.4 - 5.89 - 7.71 - 7.39\n",
" 60000 - 50.6 - 5.85 - 7.68 - 7.42\n",
" 61000 - 50.8 - 5.82 - 7.65 - 7.46\n",
" 62000 - 51.0 - 5.78 - 7.61 - 7.50\n",
" 63000 - 51.2 - 5.76 - 7.58 - 7.52\n",
" 64000 - 51.4 - 5.72 - 7.55 - 7.55\n",
" 65000 - 51.6 - 5.69 - 7.52 - 7.58\n",
" 66000 - 51.8 - 5.67 - 7.49 - 7.61\n",
" 67000 - 52.0 - 5.64 - 7.46 - 7.64\n",
" 68000 - 52.1 - 5.61 - 7.44 - 7.67\n",
" 69000 - 52.3 - 5.58 - 7.41 - 7.69\n",
" 70000 - 52.5 - 5.56 - 7.38 - 7.72\n",
" 71000 - 52.7 - 5.52 - 7.35 - 7.75\n",
" 72000 - 52.8 - 5.51 - 7.33 - 7.77\n",
" 73000 - 53.0 - 5.48 - 7.31 - 7.79\n",
" 74000 - 53.1 - 5.46 - 7.29 - 7.81\n",
" 75000 - 53.2 - 5.44 - 7.27 - 7.84\n",
" 76000 - 53.4 - 5.42 - 7.24 - 7.86\n",
" 77000 - 53.5 - 5.40 - 7.22 - 7.88\n",
" 78000 - 53.7 - 5.37 - 7.20 - 7.90\n",
" 79000 - 53.8 - 5.35 - 7.18 - 7.92\n",
" 80000 - 54.0 - 5.33 - 7.15 - 7.95\n",
" 81000 - 54.0 - 5.32 - 7.14 - 7.96\n",
" 82000 - 54.1 - 5.30 - 7.12 - 7.98\n",
" 83000 - 54.3 - 5.28 - 7.11 - 7.99\n",
" 84000 - 54.4 - 5.26 - 7.09 - 8.01\n",
" 85000 - 54.5 - 5.25 - 7.07 - 8.03\n",
" 86000 - 54.6 - 5.23 - 7.06 - 8.04\n",
" 87000 - 54.7 - 5.22 - 7.04 - 8.06\n",
" 88000 - 54.8 - 5.20 - 7.03 - 8.07\n",
" 89000 - 54.9 - 5.18 - 7.01 - 8.10\n",
" 90000 - 55.0 - 5.17 - 7.00 - 8.10\n",
" 91000 - 55.1 - 5.16 - 6.98 - 8.12\n",
" 92000 - 55.1 - 5.14 - 6.97 - 8.13\n",
" 93000 - 55.2 - 5.13 - 6.96 - 8.14\n",
" 94000 - 55.3 - 5.12 - 6.94 - 8.16\n",
" 95000 - 55.4 - 5.11 - 6.93 - 8.17\n",
" 96000 - 55.5 - 5.09 - 6.92 - 8.18\n",
" 97000 - 55.5 - 5.08 - 6.91 - 8.19\n",
" 98000 - 55.7 - 5.06 - 6.89 - 8.21\n",
" 99000 - 55.7 - 5.06 - 6.89 - 8.21\n",
" 100000 - 55.7 - 5.05 - 6.88 - 8.22\n",
" 101000 - 55.8 - 5.04 - 6.87 - 8.24\n",
" 102000 - 55.9 - 5.03 - 6.86 - 8.24\n",
" 103000 - 55.9 - 5.02 - 6.85 - 8.26\n",
" 104000 - 56.0 - 5.01 - 6.84 - 8.26\n",
" 105000 - 56.1 - 5.00 - 6.83 - 8.27\n",
" 106000 - 56.1 - 4.99 - 6.82 - 8.28\n",
" 107000 - 56.2 - 4.98 - 6.81 - 8.30\n",
" 108000 - 56.2 - 4.98 - 6.80 - 8.30\n",
" 109000 - 56.3 - 4.97 - 6.80 - 8.31\n",
" 110000 - 56.3 - 4.96 - 6.79 - 8.31\n",
" 111000 - 56.4 - 4.95 - 6.78 - 8.32\n",
" 112000 - 56.5 - 4.94 - 6.76 - 8.34\n",
" 113000 - 56.5 - 4.94 - 6.76 - 8.34\n",
" 114000 - 56.5 - 4.93 - 6.76 - 8.34\n",
" 115000 - 56.6 - 4.92 - 6.75 - 8.35\n",
" 116000 - 56.6 - 4.91 - 6.74 - 8.36\n",
" 117000 - 56.6 - 4.91 - 6.74 - 8.36\n",
" 118000 - 56.7 - 4.91 - 6.73 - 8.37\n",
" 119000 - 56.7 - 4.90 - 6.73 - 8.38\n",
" 120000 - 56.8 - 4.89 - 6.72 - 8.38\n",
" 121000 - 56.8 - 4.88 - 6.71 - 8.39\n",
" 122000 - 56.8 - 4.88 - 6.71 - 8.39\n",
" 123000 - 56.9 - 4.88 - 6.70 - 8.40\n",
" 124000 - 56.9 - 4.87 - 6.70 - 8.40\n",
" 125000 - 56.9 - 4.87 - 6.69 - 8.41\n",
" 126000 - 57.0 - 4.86 - 6.69 - 8.41\n",
" 127000 - 57.0 - 4.86 - 6.68 - 8.42\n",
" 128000 - 57.0 - 4.85 - 6.68 - 8.42\n",
" 129000 - 57.0 - 4.85 - 6.67 - 8.43\n",
" 130000 - 57.1 - 4.84 - 6.66 - 8.44\n",
" 131000 - 57.1 - 4.84 - 6.67 - 8.44\n",
" 132000 - 57.1 - 4.84 - 6.66 - 8.44\n",
" 133000 - 57.1 - 4.83 - 6.66 - 8.44\n",
" 134000 - 57.2 - 4.83 - 6.66 - 8.45\n",
" 135000 - 57.2 - 4.82 - 6.64 - 8.46\n",
" 136000 - 57.2 - 4.82 - 6.65 - 8.45\n",
" 137000 - 57.2 - 4.82 - 6.64 - 8.46\n",
" 138000 - 57.3 - 4.81 - 6.64 - 8.46\n",
" 139000 - 57.3 - 4.80 - 6.63 - 8.47\n",
" 140000 - 57.3 - 4.81 - 6.63 - 8.47\n",
" 141000 - 57.3 - 4.80 - 6.63 - 8.47\n",
" 142000 - 57.3 - 4.80 - 6.63 - 8.47\n",
" 143000 - 57.4 - 4.80 - 6.63 - 8.48\n",
" 144000 - 57.4 - 4.79 - 6.62 - 8.49\n",
" 145000 - 57.4 - 4.79 - 6.62 - 8.48\n",
" 146000 - 57.4 - 4.79 - 6.62 - 8.48\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" 147000 - 57.4 - 4.79 - 6.61 - 8.49\n",
" 148000 - 57.4 - 4.79 - 6.61 - 8.49\n",
" 149000 - 57.5 - 4.77 - 6.60 - 8.50\n",
" 150000 - 57.5 - 4.78 - 6.61 - 8.49\n",
" 151000 - 57.5 - 4.78 - 6.61 - 8.50\n",
" 152000 - 57.5 - 4.78 - 6.60 - 8.50\n",
" 153000 - 57.6 - 4.77 - 6.59 - 8.51\n",
" 154000 - 57.5 - 4.77 - 6.60 - 8.50\n",
" 155000 - 57.5 - 4.77 - 6.60 - 8.50\n",
" 156000 - 57.6 - 4.77 - 6.59 - 8.51\n",
" 157000 - 57.6 - 4.77 - 6.59 - 8.51\n",
" 158000 - 57.6 - 4.76 - 6.58 - 8.52\n",
" 159000 - 57.6 - 4.76 - 6.59 - 8.51\n",
" 160000 - 57.6 - 4.76 - 6.59 - 8.51\n",
" 161000 - 57.6 - 4.76 - 6.59 - 8.52\n",
" 162000 - 57.7 - 4.75 - 6.58 - 8.52\n",
" 163000 - 57.6 - 4.76 - 6.58 - 8.52\n",
" 164000 - 57.6 - 4.75 - 6.58 - 8.52\n",
" 165000 - 57.7 - 4.75 - 6.58 - 8.52\n",
" 166000 - 57.7 - 4.75 - 6.58 - 8.52\n",
" 167000 - 57.7 - 4.74 - 6.57 - 8.53\n",
" 168000 - 57.7 - 4.75 - 6.58 - 8.53\n",
" 169000 - 57.7 - 4.75 - 6.57 - 8.53\n",
" 170000 - 57.7 - 4.75 - 6.57 - 8.53\n",
" 171000 - 57.7 - 4.75 - 6.57 - 8.53\n",
" 172000 - 57.7 - 4.74 - 6.57 - 8.53\n",
" 173000 - 57.7 - 4.74 - 6.57 - 8.53\n",
" 174000 - 57.7 - 4.74 - 6.57 - 8.53\n",
" 175000 - 57.7 - 4.74 - 6.57 - 8.53\n",
" 176000 - 57.8 - 4.73 - 6.56 - 8.54\n",
" 177000 - 57.7 - 4.74 - 6.57 - 8.54\n",
" 178000 - 57.8 - 4.74 - 6.56 - 8.54\n",
" 179000 - 57.8 - 4.74 - 6.56 - 8.54\n",
" 180000 - 57.8 - 4.74 - 6.56 - 8.54\n",
" 181000 - 57.8 - 4.73 - 6.55 - 8.55\n",
" 182000 - 57.8 - 4.73 - 6.56 - 8.54\n",
" 183000 - 57.8 - 4.73 - 6.56 - 8.54\n",
" 184000 - 57.8 - 4.73 - 6.56 - 8.54\n",
" 185000 - 57.8 - 4.73 - 6.55 - 8.55\n",
" 186000 - 57.8 - 4.73 - 6.56 - 8.54\n",
" 187000 - 57.8 - 4.73 - 6.56 - 8.54\n",
" 188000 - 57.8 - 4.73 - 6.56 - 8.54\n",
" 189000 - 57.8 - 4.73 - 6.56 - 8.55\n",
" 190000 - 57.9 - 4.72 - 6.55 - 8.55\n",
" 191000 - 57.8 - 4.73 - 6.55 - 8.55\n",
" 192000 - 57.8 - 4.73 - 6.55 - 8.55\n",
" 193000 - 57.8 - 4.73 - 6.55 - 8.55\n",
" 194000 - 57.8 - 4.73 - 6.55 - 8.55\n",
" 195000 - 57.8 - 4.72 - 6.55 - 8.55\n",
" 196000 - 57.8 - 4.73 - 6.55 - 8.55\n",
" 197000 - 57.8 - 4.72 - 6.55 - 8.55\n",
" 198000 - 57.8 - 4.73 - 6.55 - 8.55\n",
" 199000 - 57.9 - 4.72 - 6.54 - 8.56\n"
]
}
],
"source": [
"mem_used=[]\n",
"mem_used.append(psutil.virtual_memory().used/1024**3)\n",
"train_loader = DataLoader(train_data, batch_size=50,\n",
" shuffle=True,\n",
" drop_last=True,\n",
" pin_memory=False,\n",
" num_workers=8)\n",
"\n",
"for i, item in enumerate(train_loader):\n",
" if i % 1000 == 0:\n",
" mem = psutil.virtual_memory()\n",
" print(f'{i:8} - {mem.percent:5} - {mem.free/1024**3:10.2f} - {mem.available/1024**3:10.2f} - {mem.used/1024**3:10.2f}')\n",
" mem_used.append(mem.used/1024**3)\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x7f2c0089e160>]"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAD8CAYAAACMwORRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAH1hJREFUeJzt3XmUXHWd9/H3t7t6X7N0kg4haXZMhi3kUdRRcDkKuAAOZ5QZl8dRcRx1hsdxjig+jx4ddRRZJwIDAgGBCMqOIIEQSEIgobN39k7S6fS+V+9d1VW/54+qhO6k6lZ36HTnNp/XOX2q+9atut/+1a1P/ep3b/3KnHOIiMjkkjbRBYiIyNhTuIuITEIKdxGRSUjhLiIyCSncRUQmIYW7iMgkpHAXEZmEFO4iIpOQwl1EZBIKTNSGp0+f7srKyiZq8yIivrR+/foW51xJqvUmLNzLysooLy+fqM2LiPiSmR0YyXoalhERmYQU7iIik5DCXURkElK4i4hMQgp3EZFJSOEuIjIJKdxFRCYhhfskMhiJjvo20ag7ptvVdvTRF4qM+nbjyTnHsXyNZM/A4DFtq6s/POrbnUjWH2hj/YG2iS7jmIQGowT7krf/poMdtPeERnWf/eEID715gNDg6J4f9cE+1u2f+HZ8V4V7e0+Iz93xOmv3tY7qdgdae7j5pd2jDsEf/HkL3/zD6D6oFY5E+c4jG1i9p2VUt1u+o5FzfrqMnQ2dR13XEOxPersfP13B5bevGtX/1j0wyKW3ruT6J7aMqsbtdZ289xcvs/lgx6hud9dre/nYTa+O6sXEOceVd6zhh09sHdW2djd2ccHPXuKpjbWjut3vV+3nol8up6kzeVsn8pOnK/jZs9tHdZu+UIQv3bt21PvItrog33iwPGEIhiNRvvXQBr710AbCR+wLv/jLdr625K1RvVCGI1G+fN86nthQM6oa+8MRnthQc1QNqfzsuW187KbXEr7ANgT7ufrONfzfpyuOuu6RtdVJ82Dpump+/FQFj5YfHLZ8T2MXi/7zJdZUJm7/Hzy+lS/+fi2t3QPDlv/hjSo+9JtXPF+ExtKkC/cfP7WVf126kWj06B3x3tX72VDdwU0v7R7Vff76rzu5ffkentgw8id8dWsvj60/yIvbGpPuBIk8u7mO57bUc8NTW0fcY4hGHTe+uIu+cITbl+8Zdt2jb1Vz0a+W88CaqqNu1xDs57G3DrK7sZsnjwizO16t5IrFqwn2Hr0jPr2plq7+QZ7ZXEdlU/eI/7fFK/bQ1DXAb5ftGvFtuvrD/G5FJXube3jgjaP/h2Re3dXM5oMdPFp+kF0NXSO+3f+8to9QJMotL4/8xXxgMMLdq/bRE4pwf4J2TmZHfScPvHGA+9fsp7Jp5DU++lY1q/a08PPntifczxNxzvHz57bz0vZG7nx171HXv7KziaauAZq6Bli2rfHw8sbOfpasqWL5ziZerxx5p+ipjbWs3N3ML5/fOaoX5d+v2sf3HtvMg2+M6EOYAAT7wvx5fQ0t3QPct7rqqOuXrqtmMOp4oaKBmvbew8t31Hfyoye38i8PbzgqcJ1zPPpWLNTvX71/WDvfunwPLd0hfv3XnUe94FU2dbNydzOhSJTHyt9+YesLRbht+R4OtvVxz8p9I/7f3gnfhvuavS08t6Vu2BPwrxX1PPRmNc9sruPO14bvwMHeMEvWVFGUk8G6/W1sGmHvsaqlhxcqGkhPM255eTf94ZHtqPev2U+6GSUFWfx22a6EvZ7e0OCwnSYaddz56l6m5GZwoLWXh948egfv7A/zemULG6rbDwfvyzsa2dnQxfzSQp7f2nC4917d2svPnt1ORrrxi7/soKI2OOy+HnijiqhzlE3LZfGKysNtuaayhRtf3MXmmiD//qfNw2p3zvHQm9WcWpJHdiCd25bvob0nRGTI/9EfjlBRG2RHfSf7W3po7hpgX3M3L1Q0MHdqLqv2tPBW1cjetj68tpqu/kHOnJnPna/uPao3BLFwPbJ97165j5mFWeRnBvjtsl109Yfp6A1R19FHJOoYGIywr7l72P7TEOznmc21nD2rgAOtvUe94AE0dfWzq6FrWM/y2c31NHcNUDYtl4fePED3CId1/vuVPeRnBcjJSGfxK5VHXR/sDfPEhhq21gQP/3/hSJR7Vu2nODeDXY1dPF9Rf9TtnHNHBeqava28ua+NGQVZ3P/6fuo6+oZdv3RdNTMLszh5as6wF9H7X68iEnVMzctk8YrhHYdD6oN91Af7GBiMbXMwEuV3KyqZUZBFS/dAwv042BdmW11w2OMW7A3zP/HgW/zKHjoT9MJ3N3axbn/bsNs9saGG/nCU95QWcs+qfbQNGX4JR6IsXVfNuXOKsPj/c8jiVyrJyUinrTd0VKeooraTnQ1dvP/Uaexr6eGlHY2EBqPsbOjk+a31nDWzgM01QV7d1Tzsdg+sqSIzPY0Fswt5ZN2Bw8/vP75VTUt3iPeUFnLv6v00dY3uHd6xsFRvtczsZOBBYBYQBe52zt12xDpnA/cDC4EbnHO/TbXhRYsWuXcyt8yn/3sVFbWdzC7Kpmx63uHQnlmYzSklebywtZ4ZBdkU52Zw+ox8qlp7qKjt5M///H6+uuQtTp2ex4fOKGFmUTZFORk0dw2wo76TqpYeBgajzJmSw/zSQjbXdLBydwu//fvz+NelG/nQGdM5b04xOxu6CKQZs4qy2V7fSSDNmF9ayElTcohEHbe8tJtPLJjForIp3PBkBRfMLWZqbibrq9s5c2YBGenGmr2tZKSnMW9qLvOm5ZGeBi9ua+TWz5/Pn9Yf5PXKVjIDaeRmplOYncGswmy21gbpi7/ApBmUTcujPthPSUEWT/7LB7jkxlcZjDpKi7KpC/aRkZbG0msv4p+WvEVrT4jz5hRhZjjn2NXQxYfPLOFzC+fwjQfLyclIZ2peJm09IWYXZ/O5hXO48cVdnFaSx3tKCyktyiYccSxZU8Uvrvobqlp6uGfV/vg+AEU5GRTnZFAX7D/qXUd2RhrOwcvfu5ir7nidnoEIJ03JITsjjSm5mcwuymFzTQfVbb1kBdLIzkgnOyOdhmA/i8qmcP1lZ/Op21cDMLMwi7lTc+kPR6nr6KO1J0RxbgbzpuZS1dpLbmY69cF+brj8PfSEBrn15eFP3KxAGlHnCEcc+VkBzp5VQEF2gJr2PvY2d7Pi+5fwrYc2sL2+k/ysAAtmFzI9P4tNBzuojYdiViCNkoIsCrIzaAj2MaMgm19ffS5X/u51Fswu5LSSfByQHUjDARur28nPCjB/dhHrD7TR0RumqWuA73zk9Hhg7+P8k4sJRxztvSHyswIcaO09/FgXZAWYXZxDblY6G6s7uPcri/ivF3bS3D3A/NJCpuRlkhVIo7lrgIraIO29Yc6aWUBRTga94UEOtvWRl5nOQ19/H5feuopp+Zn87enTOWlKDn2h2DuP73zkdPKzAvzqhZ0U52ZQkB2gtTvER86awcJ5U/j5c9v56NkzKC3KZjDiCEei7GrsYlvd20OB+VkBCrID1Af7ueuLF/Lw2gOs29/GqSX5FOUEyAyk09TZz56mbiJRx9mzCpg3LZe6jn7SDDbXBLnx6nP5jz9vYeHcYkqLYs+n9HSjZ2DwcJieOj2PWUXZ5GUF2FYbZEZhNr+5+lwuu20VRTkZXHxmCbXtffSFI2ytDfL7Ly/i2S2xd8WnleQxZ0ouK3Y18e1LTqe1J8TSddWcPDWHGQXZZAXSaO8Ns6+5mzXXf5RP3b6ahiHDbflZAVZ8/xKuuuN12ntCnDWrAEfsWM3+lh6uOP8kLj6zhO8u3cj0/CyCfbEXmwtOnsJvrj6Xj9/8Gl+8aB4//eyCY8o+M1vvnFuUcr0RhHspUOqc22BmBcB64Ern3PYh68wA5gFXAu3jEe6X3rqSSNRxyvQ8WntCBPvCpJtx8+fPY+7UWE+0oydMU1c/lc3dTM3N5PJzSvnmxadx12t7uX35HvrDEYa+q52Wl8kZM/PJCqSzv6WH6rbYW7h/eN9cfnnVOdy0bBePr6+hLtjPaSV5RF2st3fWrAKizrGzoetwqE3Pz+Thr1/EaSV53Lt6P09vqqM3NMiF86ayo76T/sEIn1wwi0jUxbbV2ktHX4g5U3J59NqLaO8N81j5Qbr6B+kNDdLeG6a2vZczZxZw2TmlRKJRNh8Msquhi+kFmVzz3rksmF1EeVUbz22pp7Gzn9KiHD59XikL507hQGsPj5UfZO2+NjIDaZhBbyjCL686h7NnFfD0pjq21ATp6AuRFUjjGx86lVOm57FkTRWr97Swp6mbxs5+wpEopUU5vPh/PkxWII1l2xpp6uqnvTfWM27vDTOjIIsL503BgP7BCG09YTZWt/O/yqbylQ+UsbG6nac21tLUNcDAYJTmrgEOtvcyv7SQs2cVEopE6A9H6Q9HGIw4vvux01kwu4i3qtpYu6+VqtZeqlt7yc1Kp7Qoh1mF2dR19FHd1sspJXn0DgzSPTDILZ8/n+yMdJ7bUkdz1wDpaWlkZ6RR1dJDeloap0zPZXNNkP3NPXQNhMnJSOeSs2bw7Y+cTm1HX6zGzn42VHfQ3hvivDnFXDC3mGn5mWyv66S1O0Rn/yA9A4N88+JTueSsGfxuRSWv7GyiuWuANIP+cJTBaJTz5hTT3htiR30XF86bwknFOUSd48efmo/D8Z9/2UFDsJ/0NGNqXiZd/YOUFGRy9YVz2N/Sy9aaDuqC/dQH+zipOIe7vnghW2uDLH6lkraeEG29IQbCUabmZXL2rAJKi3PYUtNBfzhCbmaA3Mx0/vcHylhUNpVXdjbyyNqDbDrYTkt3iIx0Y/7sIu7+0oXkZqZz07LdRJ2jtTvE3uZubvn8+ZRNy+Nnz22jvKqdtp4QGelpBNKNmYXZXLpgFnlZAdp6BmjpDtHWE2JKbgY/+cwCajv6WPxKJa09ITr7wvQPRpien8WC2YXMLMxm6bpq+kIRZhfnsLuxi4/Pn8kvrzqHXz2/g2XbG0kzSE8zBqOOwYjjyvNnc/LUXJ7ZXEd/OEJbT4jqtl5u+8IFXH5OKesPtHPHikq21AYpm5aLYUzLz2TxPyykvTfEPSv3sa+lh4NtvUSd49Fr309mII0H3zhARV2Qjt4QfaEIdR39fOa8Um741Hy21HTw5r5WwvEXtIVzp/DhM0vYVhfkkbXV7GvuIZBu5GUGKMrJ4DsfPZ2Zhdlc9+hGAmlplBZn09kX5osXzWPB7CKe3lTLRadOY2Zh9jFl35iFe4I7fhpY7Jx7KcF1PwW6xyPcP3HLa5w+I587/vHCY76PaNTR3D1AZ1+YqXmZTM3LxMwOX98bGqSxc4CTinPIDLw9gjUwGCErkJ7w/tp7Q6SnGUU5GcPuS+REFBqMkp5mpKf5d191zr2rnmsjDfdRTflrZmXABcDaYytr7EQd7/gBTUuL9TySvYLmZgY4ZfrRTZQo2A/d37T8rHdUk8h4Gtpp8at3U7CPxogfWTPLBx4HrnPOHX2+3cju41ozKzez8ubm5tQ38BB1jjQ9qCIiCY0o3M0sg1iwP+yce+JYN+acu9s5t8g5t6ikJOUXiaS4r9gBRREROVrKcLfYe557gR3OuZuPf0kjo567iEhyIxlz/yDwJWCrmW2KL/sRMBfAOXeXmc0CyoFCIGpm1wHzj3X4ZiSizqFsFxFJLGW4O+dWA54x6pxrAOaMVVEjEY2inruISBK+PVTunNOYu4hIEr4N96hTz11EJBkfh/u764MLIiKj4eNw16mQIiLJ+DbcnU6FFBFJyrfhHtUBVRGRpHwc7ppTQkQkGR+Hu4ZlRESS8W24a24ZEZHkfBvuUedIU7qLiCTk63DXqIyISGI+Dnd9QlVEJBnfhrvmlhERSc634a6eu4hIcj4Od80tIyKSjC/D3TmnUyFFRDz4NNxjlxqWERFJzJfhHo2nu3ruIiKJ+TTcY5cacxcRScyn4X6o565wFxFJxJfh/vaY+8TWISJyovJluKvnLiLizdfhrmwXEUnMp+Eeu1TPXUQkMV+Gu9OpkCIinnwZ7od77kp3EZGEfBruh8bcFe4iIon4OtzVcRcRScyX4a65ZUREvPky3NVzFxHx5tNwj11qzF1EJDF/hntUn1AVEfHiy3DX3DIiIt58Ge6aW0ZExFvKcDezk81shZntMLNtZvZvCdYxM7vdzCrNbIuZLTw+5cZobhkREW+BEawzCPy7c26DmRUA683sJefc9iHrXAacEf95H3Bn/PK40NwyIiLeUvbcnXP1zrkN8d+7gB3ASUesdgXwoIt5Eyg2s9Ixr/btmgCFu4hIMqMaczezMuACYO0RV50EHBzydw1HvwCMmagOqIqIeBpxuJtZPvA4cJ1zrvPIqxPcxCW4j2vNrNzMypubm0dX6RCaW0ZExNuIwt3MMogF+8POuScSrFIDnDzk7zlA3ZErOefuds4tcs4tKikpOZZ6AX1CVUQklZGcLWPAvcAO59zNSVZ7Bvhy/KyZi4Cgc65+DOscRnPLiIh4G8nZMh8EvgRsNbNN8WU/AuYCOOfuAp4HLgcqgV7gq2Nf6tsO99x9eZa+iMjxlzLcnXOrSTymPnQdB3x7rIpKRXPLiIh482XfV59QFRHx5stw13eoioh482W46xOqIiLe/BnuUc0tIyLixZ/hrp67iIgnX4a75pYREfHmy3DX3DIiIt58Gu6aW0ZExIuvw109dxGRxHwZ7ppbRkTEmy/DXZ9QFRHx5tNwj10q20VEEvNpuKvnLiLixZfh7jTlr4iIJ1/Goz6hKiLizafhrlMhRUS8+DTcY5f6EJOISGK+DHfNLSMi4s2X4a5hGRERb/4M92js0ry/2lVE5F3Ln+Hu9GUdIiJefBnuh+eW0biMiEhCvgx3jbmLiHjzabjHLnW2jIhIYj4Nd425i4h48WW46zx3ERFvvgx3DcuIiHjzabjrgKqIiBefhnvsUnPLiIgk5stwd+q5i4h48mW465uYRES8+TTcY5cKdxGRxHwa7jrPXUTEiy/D3annLiLiKWW4m9l9ZtZkZhVJrp9iZk+a2RYzW2dmfzP2ZQ4XjeqAqoiIl5H03JcAl3pc/yNgk3PuXODLwG1jUJcnjbmLiHhLGe7OuZVAm8cq84Hl8XV3AmVmNnNsyktMY+4iIt7GYsx9M/A5ADN7LzAPmDMG95uUcw4zfYhJRCSZsQj3/wKmmNkm4LvARmAw0Ypmdq2ZlZtZeXNz8zFvMOo0JCMi4iXwTu/AOdcJfBXAYl3p/fGfROveDdwNsGjRInes24w6p4OpIiIe3nHP3cyKzSwz/ufXgZXxwD9uok5DMiIiXlL23M1sKXAJMN3MaoCfABkAzrm7gPcAD5pZBNgOfO24VRvn1HMXEfGUMtydc9ekuP4N4Iwxq2gEYsMySncRkWR8+QlVHVAVEfHm03B3OsddRMSDL8PdqecuIuLJl+GuUyFFRLz5ONyV7iIiyfg03HWeu4iIF1+Gu85zFxHx5stwj0Z1QFVExIs/w109dxERTz4Nd425i4h48WW4O+dI82XlIiLjw5cRqVMhRUS8+TTcdUBVRMSLT8Ndc8uIiHjxZbhrbhkREW++DHedCiki4s3H4a50FxFJxqfhrvPcRUS8+DLcNbeMiIg3X4a7ToUUEfHm03BXz11ExItPw11j7iIiXnwZ7hpzFxHx5stw16mQIiLe/Bnu+rIOERFP/gx3zS0jIuLJl+GuuWVERLz5Mtyj+rIOERFPvoxIHVAVEfHm03DXee4iIl58Ge46z11ExJsvw11zy4iIePNpuKvnLiLixafhrjF3EREvKcPdzO4zsyYzq0hyfZGZPWtmm81sm5l9dezLHE5j7iIi3kbSc18CXOpx/beB7c6584BLgJvMLPOdl5acToUUEfGWMtydcyuBNq9VgAKLjZPkx9cdHJvyEtMBVRERb4ExuI/FwDNAHVAAfN45Fx2D+01Kc8uIiHgbiwOqnwQ2AbOB84HFZlaYaEUzu9bMys2svLm5+Zg3qLllRES8jUW4fxV4wsVUAvuBsxOt6Jy72zm3yDm3qKSk5Jg3qFMhRUS8jUW4VwMfAzCzmcBZwL4xuN+kdEBVRMRbyjF3M1tK7CyY6WZWA/wEyABwzt0F/BxYYmZbAQN+4JxrOW4VE/uyDp3nLiKSXMpwd85dk+L6OuATY1bRCOg8dxERb779hKqGZUREkvNpuOvLOkREvPgyIjW3jIiIN1+Gu8bcRUS8+TLcdSqkiIg3n4a7DqiKiHjxabhrbhkRES++DHfNLSMi4s2X4a65ZUREvPk43JXuIiLJ+DTcdZ67iIgXX4a7znMXEfHmy3DXqZAiIt58Gu7quYuIePFduDvncBpzFxHx5MNwj11qWEZEJDnfhXs0nu4alhERSc6H4R67TFO6i4gk5cNwj6W7RmVERJLzXbhrzF1EJDXfhbvG3EVEUvNxuCvdRUSS8WG4xy51nruISHK+C3enYRkRkZR8F+5RHVAVEUnJh+GunruISCq+DXeNuYuIJOe7cNd57iIiqfku3DUsIyKSmg/DPXapnruISHL+C/eo5pYREUnFd+GuMXcRkdR8F+6Hx9x9V7mIyPjxXURqbhkRkdRShruZ3WdmTWZWkeT6/zCzTfGfCjOLmNnUsS81RnPLiIikNpKe+xLg0mRXOududM6d75w7H/gh8Jpzrm2M6ku0PUCnQoqIeEkZ7s65lcBIw/oaYOk7qigFnQopIpLamI25m1kusR7+42N1n4noQ0wiIqmN5QHVzwCvew3JmNm1ZlZuZuXNzc3HtBHNLSMiktpYhvsXSDEk45y72zm3yDm3qKSk5Jg2ovPcRURSG5NwN7Mi4GLg6bG4Py8alhERSS2QagUzWwpcAkw3sxrgJ0AGgHPurvhqVwHLnHM9x6nOw3RAVUQktZTh7py7ZgTrLCF2yuRx9/aY+3hsTUTEn3z3CVWnT6iKiKTku3DXsIyISGr+C/eoDqiKiKTiv3DX3DIiIin5Ltw1t4yISGq+C/fDY+5KdxGRpHwY7uq5i4ik4ttw15i7iEhyvgt3zS0jIpKa78JdwzIiIqn5MNxjl+q5i4gk58Nw19wyIiKp+C7cNbeMiEhqvgt3DcuIiKTmu3CfWZjNp84ppSA75WzFIiLvWr5LyAvnTeHCeVMmugwRkROa73ruIiKSmsJdRGQSUriLiExCCncRkUlI4S4iMgkp3EVEJiGFu4jIJKRwFxGZhOzQXC3jvmGzZuDAMd58OtAyhuWMlRO1Ljhxa1Ndo6O6Rmcy1jXPOVeSaqUJC/d3wszKnXOLJrqOI52odcGJW5vqGh3VNTrv5ro0LCMiMgkp3EVEJiG/hvvdE11AEidqXXDi1qa6Rkd1jc67ti5fjrmLiIg3v/bcRUTEg+/C3cwuNbNdZlZpZtdPYB0nm9kKM9thZtvM7N/iy39qZrVmtin+c/kE1FZlZlvj2y+PL5tqZi+Z2Z745bhOim9mZw1pk01m1mlm101Ee5nZfWbWZGYVQ5YlbB+LuT2+v20xs4XjXNeNZrYzvu0nzaw4vrzMzPqGtNtd41xX0sfNzH4Yb69dZvbJca7r0SE1VZnZpvjy8WyvZNkwvvuYc843P0A6sBc4FcgENgPzJ6iWUmBh/PcCYDcwH/gp8P0JbqcqYPoRy34DXB///Xrg1xP8ODYA8yaivYAPAwuBilTtA1wOvAAYcBGwdpzr+gQQiP/+6yF1lQ1dbwLaK+HjFn8ObAaygFPiz9f08arriOtvAv7fBLRXsmwY133Mbz339wKVzrl9zrkQ8EfgiokoxDlX75zbEP+9C9gBnDQRtYzQFcAD8d8fAK6cwFo+Bux1zh3rh9jeEefcSqDtiMXJ2ucK4EEX8yZQbGal41WXc26Zc24w/uebwJzjse3R1uXhCuCPzrkB59x+oJLY83Zc6zIzA/4eWHo8tu3FIxvGdR/zW7ifBBwc8ncNJ0CgmlkZcAGwNr7oO/G3V/eN9/BHnAOWmdl6M7s2vmymc64eYjsfMGMC6jrkCwx/0k10e0Hy9jmR9rl/ItbDO+QUM9toZq+Z2YcmoJ5Ej9uJ0l4fAhqdc3uGLBv39joiG8Z1H/NbuFuCZRN6uo+Z5QOPA9c55zqBO4HTgPOBemJvDcfbB51zC4HLgG+b2YcnoIaEzCwT+Czwp/iiE6G9vJwQ+5yZ3QAMAg/HF9UDc51zFwDfAx4xs8JxLCnZ43ZCtBdwDcM7EOPeXgmyIemqCZa94zbzW7jXACcP+XsOUDdBtWBmGcQevIedc08AOOcanXMR51wUuIfj9JbUi3OuLn7ZBDwZr6Hx0Fu9+GXTeNcVdxmwwTnXGK9xwtsrLln7TPg+Z2ZfAT4N/KOLD9LGhz1a47+vJza2feZ41eTxuJ0I7RUAPgc8emjZeLdXomxgnPcxv4X7W8AZZnZKvAf4BeCZiSgkPqZ3L7DDOXfzkOVDx8quAiqOvO1xrivPzAoO/U7sgFwFsXb6Sny1rwBPj2ddQwzrUU10ew2RrH2eAb4cP6PhIiB46K31eDCzS4EfAJ91zvUOWV5iZunx308FzgD2jWNdyR63Z4AvmFmWmZ0Sr2vdeNUV93Fgp3Ou5tCC8WyvZNnAeO9j43H0eCx/iB1Z3k3slfeGCazjb4m9ddoCbIr/XA78AdgaX/4MUDrOdZ1K7GyFzcC2Q20ETAOWA3vil1MnoM1ygVagaMiycW8vYi8u9UCYWK/pa8nah9hb5t/F97etwKJxrquS2HjsoX3srvi6fxd/fDcDG4DPjHNdSR834IZ4e+0CLhvPuuLLlwD/fMS649leybJhXPcxfUJVRGQS8tuwjIiIjIDCXURkElK4i4hMQgp3EZFJSOEuIjIJKdxFRCYhhbuIyCSkcBcRmYT+P4zExkysNKamAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# mem use with fixed length array of type string_\n",
"plt.plot(np.array(mem_used))\n"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x7f57080b7940>]"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# plot with array of type object\n",
"plt.plot(np.array(mem_used))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"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.6.7"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment