{
 "metadata": {
  "name": "taskmap_10.12.12"
 },
 "nbformat": 3,
 "nbformat_minor": 0,
 "worksheets": [
  {
   "cells": [
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "# Load balanced map and parallel function decorator"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": true,
     "input": [
      "from IPython.parallel import Client"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 1
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "rc = Client()\n",
      "v = rc.load_balanced_view()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 2
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "result = v.map(lambda x: 2*x, range(10))\n",
      "print \"Simple, default map: \", list(result)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Simple, default map:  [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]\n"
       ]
      }
     ],
     "prompt_number": 3
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "ar = v.map_async(lambda x: 2*x, range(10))\n",
      "print \"Submitted tasks, got ids: \", ar.msg_ids\n",
      "result = ar.get()\n",
      "print \"Using a mapper: \", result"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Submitted tasks, got ids:  ['f4b67a21-c5c5-4bbd-be0c-f45f2602c146', 'e9ffaf02-da5a-49ca-97fe-ccbe2f1933ec', '76cceaa9-858d-495d-a28b-294d4f791582', '680083bb-bdf3-430b-ae88-8d5dcd09be59', '6e17596f-ef5e-4834-99c2-fb11b3c1b1f4', 'de331d71-2bb3-4fcb-8b9e-dc1dcacb3096', '5a17ae34-f9e4-4748-babd-40a920c37241', 'f85d4f99-6c0b-41fa-9a9a-ce3d71a252e6', '20eeccf9-70d2-4f2e-95e1-6de302a2e415', 'c18be7b2-6d24-43ac-b9ba-850b179af7fd']\n",
        "Using a mapper:  [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]\n"
       ]
      }
     ],
     "prompt_number": 4
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "@v.parallel(block=True)\n",
      "def f(x): return 2*x\n",
      "\n",
      "result = f.map(range(10))\n",
      "print \"Using a parallel function: \", result"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Using a parallel function:  [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]\n"
       ]
      }
     ],
     "prompt_number": 5
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "@v.parallel(block=False)\n",
      "def f(x): return 2*x\n",
      "ar=f.map(range(10))\n",
      "print ar"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "<AsyncMapResult: f>\n"
       ]
      }
     ],
     "prompt_number": 12
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "result=ar.get()\n",
      "print \"Using a parallel function: \", result"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Using a parallel function:  [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]\n"
       ]
      }
     ],
     "prompt_number": 13
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [],
     "language": "python",
     "metadata": {},
     "outputs": []
    }
   ],
   "metadata": {}
  }
 ]
}