Skip to content

Instantly share code, notes, and snippets.

@rossant
Created October 7, 2013 17:31
Show Gist options
  • Select an option

  • Save rossant/6871725 to your computer and use it in GitHub Desktop.

Select an option

Save rossant/6871725 to your computer and use it in GitHub Desktop.
Tests with cache extension in the IPython notebook.
Display the source blob
Display the rendered blob
Raw
{
"metadata": {
"name": ""
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Caching variables in a file"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import numpy as np"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 1
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"%load_ext cachemagic\n",
"%reload_ext cachemagic"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 2
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def long_function(a, b):\n",
" import time\n",
" time.sleep(1)\n",
" return a + b"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 3
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The following cell will only be executed if the file does not exist (there is a --force option)."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"%%cache a b c --to=myvars.pkl\n",
"a = 3\n",
"b = np.random.randn(3)\n",
"c = long_function(a, b)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Saving variables a, b, c to file 'myvars.pkl'.\n"
]
}
],
"prompt_number": 4
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print(a, b, c)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"(3, array([ 0.55318298, 0.51197022, 0.69746155]), array([ 3.55318298, 3.51197022, 3.69746155]))\n"
]
}
],
"prompt_number": 5
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"del a, b, c"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 6
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now, we execute the same cell again (in practice, the cell only appears once in the notebook, so this simulates multiple executions of the same cell)."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"%%cache a b c --to=myvars.pkl\n",
"a = 3\n",
"b = np.random.randn(3)\n",
"c = long_function(a, b)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Skipping the cell's code and loading variables a, b, c from file 'myvars.pkl'.\n"
]
}
],
"prompt_number": 7
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The cell has been skipped, but the variables have been recovered from the pickle file."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print(a, b, c)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"(3, array([ 0.55318298, 0.51197022, 0.69746155]), array([ 3.55318298, 3.51197022, 3.69746155]))\n"
]
}
],
"prompt_number": 8
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now, let's delete the file."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import os\n",
"os.remove('myvars.pkl')"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 9
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's execute the cell once more."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"%%cache a b c --to=myvars.pkl\n",
"a = 3\n",
"b = np.random.randn(3)\n",
"c = long_function(a, b)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Saving variables a, b, c to file 'myvars.pkl'.\n"
]
}
],
"prompt_number": 10
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print(a, b, c)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"(3, array([-0.23155996, 2.02340671, 0.36882648]), array([ 2.76844004, 5.02340671, 3.36882648]))\n"
]
}
],
"prompt_number": 11
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"os.remove('myvars.pkl')"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 12
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment