##// END OF EJS Templates
add RMS example for iterating over MapResult
MinRK -
Show More
@@ -101,11 +101,45 b' Map results are iterable!'
101 =========================
101 =========================
102
102
103 When an AsyncResult object has multiple results (e.g. the :class:`~AsyncMapResult`
103 When an AsyncResult object has multiple results (e.g. the :class:`~AsyncMapResult`
104 object), you can actually iterate through them, and act on the results as they arrive:
104 object), you can actually iterate through results themselves, and act on them as they arrive:
105
105
106 .. literalinclude:: ../../examples/parallel/itermapresult.py
106 .. literalinclude:: ../../examples/parallel/itermapresult.py
107 :language: python
107 :language: python
108 :lines: 20-67
108 :lines: 20-67
109
110 That is to say, if you treat an AsyncMapResult as if it were a list of your actual
111 results, it should behave as you would expect, with the only difference being
112 that you can start iterating through the results before they have even been computed.
113
114 This lets you do a dumb version of map/reduce with the builtin Python functions,
115 and the only difference between doing this locally and doing it remotely in parallel
116 is using the asynchronous view.map instead of the builtin map.
117
118
119 Here is a simple one-line RMS (root-mean-square) implemented with Python's builtin map/reduce.
120
121 .. sourcecode:: ipython
122
123 In [38]: X = np.linspace(0,100)
124
125 In [39]: from math import sqrt
126
127 In [40]: add = lambda a,b: a+b
128
129 In [41]: sq = lambda x: x*x
130
131 In [42]: sqrt(reduce(add, map(sq, X)) / len(X))
132 Out[42]: 58.028845747399714
133
134 In [43]: sqrt(reduce(add, view.map(sq, X)) / len(X))
135 Out[43]: 58.028845747399714
136
137 To break that down:
138
139 1. ``map(sq, X)`` Compute the square of each element in the list (locally, or in parallel)
140 2. ``reduce(add, sqX) / len(X)`` compute the mean by summing over the list (or AsyncMapResult)
141 and dividing by the size
142 3. take the square root of the resulting number
109
143
110 .. seealso::
144 .. seealso::
111
145
General Comments 0
You need to be logged in to leave comments. Login now