Show More
@@ -27,6 +27,7 b' Authors:' | |||
|
27 | 27 | from __future__ import division |
|
28 | 28 | |
|
29 | 29 | import types |
|
30 | from itertools import islice | |
|
30 | 31 | |
|
31 | 32 | from IPython.utils.data import flatten as utils_flatten |
|
32 | 33 | |
@@ -77,9 +78,14 b' class Map:' | |||
|
77 | 78 | else: |
|
78 | 79 | lo.append(n*basesize + remainder) |
|
79 | 80 | hi.append(lo[-1] + basesize) |
|
80 | ||
|
81 | 81 | |
|
82 | result = seq[lo[p]:hi[p]] | |
|
82 | try: | |
|
83 | result = seq[lo[p]:hi[p]] | |
|
84 | except TypeError: | |
|
85 | # some objects (iterators) can't be sliced, | |
|
86 | # use islice: | |
|
87 | result = list(islice(seq, lo[p], hi[p])) | |
|
88 | ||
|
83 | 89 | return result |
|
84 | 90 | |
|
85 | 91 | def joinPartitions(self, listOfPartitions): |
@@ -95,6 +95,17 b' class TestLoadBalancedView(ClusterTestCase):' | |||
|
95 | 95 | # Ensure that results came in order |
|
96 | 96 | self.assertEquals(astheycame, reference) |
|
97 | 97 | self.assertEquals(amr.result, reference) |
|
98 | ||
|
99 | def test_map_iterable(self): | |
|
100 | """test map on iterables (balanced)""" | |
|
101 | view = self.view | |
|
102 | # 101 is prime, so it won't be evenly distributed | |
|
103 | arr = range(101) | |
|
104 | # so that it will be an iterator, even in Python 3 | |
|
105 | it = iter(arr) | |
|
106 | r = view.map_sync(lambda x:x, arr) | |
|
107 | self.assertEquals(r, list(arr)) | |
|
108 | ||
|
98 | 109 | |
|
99 | 110 | def test_abort(self): |
|
100 | 111 | view = self.view |
@@ -240,6 +240,16 b' class TestView(ClusterTestCase):' | |||
|
240 | 240 | r = view.map_sync(f, data) |
|
241 | 241 | self.assertEquals(r, map(f, data)) |
|
242 | 242 | |
|
243 | def test_map_iterable(self): | |
|
244 | """test map on iterables (direct)""" | |
|
245 | view = self.client[:] | |
|
246 | # 101 is prime, so it won't be evenly distributed | |
|
247 | arr = range(101) | |
|
248 | # ensure it will be an iterator, even in Python 3 | |
|
249 | it = iter(arr) | |
|
250 | r = view.map_sync(lambda x:x, arr) | |
|
251 | self.assertEquals(r, list(arr)) | |
|
252 | ||
|
243 | 253 | def test_scatterGatherNonblocking(self): |
|
244 | 254 | data = range(16) |
|
245 | 255 | view = self.client[:] |
@@ -446,6 +456,5 b' class TestView(ClusterTestCase):' | |||
|
446 | 456 | self.fail(e.evalue) |
|
447 | 457 | else: |
|
448 | 458 | raise e |
|
449 |
|
|
|
450 | ||
|
459 | ||
|
451 | 460 |
General Comments 0
You need to be logged in to leave comments.
Login now