Skip to content

Instantly share code, notes, and snippets.

@aneesha
Created June 6, 2018 09:49
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save aneesha/1d1cb9608625d76b143a51b9da6c50a1 to your computer and use it in GitHub Desktop.
Save aneesha/1d1cb9608625d76b143a51b9da6c50a1 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"from dask import delayed, compute\n",
"import dask"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"@delayed\n",
"def square(num):\n",
" print(\"square fn:\", num)\n",
" print()\n",
" return num * num\n",
"\n",
"@delayed\n",
"def sum_list(args):\n",
" print(\"sum_list fn:\", args)\n",
" return sum(args)\n",
"\n",
"items = [1, 2, 3]\n",
"\n",
"computation_graph = sum_list([square(i) for i in items])\n",
"\n",
"computation_graph.visualize()"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"square fn: 2\n",
"\n",
"square fn: 1\n",
"\n",
"square fn: 3\n",
"\n",
"sum_list fn: [1, 4, 9]\n",
"Result 14\n"
]
}
],
"source": [
"print(\"Result\", computation_graph.compute())"
]
},
{
"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.5.2"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment