diff --git a/IPython/parallel/client/view.py b/IPython/parallel/client/view.py index bf0dabe..dc1a078 100644 --- a/IPython/parallel/client/view.py +++ b/IPython/parallel/client/view.py @@ -692,6 +692,9 @@ class DirectView(View): block = block if block is not None else self.block track = track if track is not None else self.track targets = targets if targets is not None else self.targets + + # construct integer ID list: + targets = self.client._build_targets(targets)[1] mapObject = Map.dists[dist]() nparts = len(targets) @@ -730,6 +733,9 @@ class DirectView(View): mapObject = Map.dists[dist]() msg_ids = [] + # construct integer ID list: + targets = self.client._build_targets(targets)[1] + for index, engineid in enumerate(targets): msg_ids.extend(self.pull(key, block=False, targets=engineid).msg_ids) diff --git a/IPython/parallel/tests/test_view.py b/IPython/parallel/tests/test_view.py index b492b70..922019b 100644 --- a/IPython/parallel/tests/test_view.py +++ b/IPython/parallel/tests/test_view.py @@ -233,6 +233,15 @@ class TestView(ClusterTestCase): view.scatter('a', a) b = view.gather('a', block=True) assert_array_equal(b, a) + + def test_scatter_gather_lazy(self): + """scatter/gather with targets='all'""" + view = self.client.direct_view(targets='all') + x = range(64) + view.scatter('x', x) + gathered = view.gather('x', block=True) + self.assertEquals(gathered, x) + @dec.known_failure_py3 @skip_without('numpy')