diff --git a/IPython/parallel/client/client.py b/IPython/parallel/client/client.py index 60cbd67..edd7269 100644 --- a/IPython/parallel/client/client.py +++ b/IPython/parallel/client/client.py @@ -1024,6 +1024,8 @@ class Client(HasTraits): targets: list,slice,int,etc. [default: use all engines] The subset of engines across which to load-balance """ + if targets == 'all': + targets = None if targets is not None: targets = self._build_targets(targets)[1] return LoadBalancedView(client=self, socket=self._task_socket, targets=targets) @@ -1041,7 +1043,9 @@ class Client(HasTraits): The engines to use for the View """ single = isinstance(targets, int) - targets = self._build_targets(targets)[1] + # allow 'all' to be lazily evaluated at each execution + if targets != 'all': + targets = self._build_targets(targets)[1] if single: targets = targets[0] return DirectView(client=self, socket=self._mux_socket, targets=targets) diff --git a/IPython/parallel/tests/test_client.py b/IPython/parallel/tests/test_client.py index 440706b..1fb4684 100644 --- a/IPython/parallel/tests/test_client.py +++ b/IPython/parallel/tests/test_client.py @@ -76,7 +76,16 @@ class TestClient(ClusterTestCase): v = self.client.load_balanced_view(-1) self.assertEquals(v.targets, [self.client.ids[-1]]) v = self.client.load_balanced_view('all') - self.assertEquals(v.targets, self.client.ids) + self.assertEquals(v.targets, None) + + def test_dview_targets(self): + """test load_balanced_view targets""" + v = self.client.direct_view() + self.assertEquals(v.targets, 'all') + v = self.client.direct_view('all') + self.assertEquals(v.targets, 'all') + v = self.client.direct_view(-1) + self.assertEquals(v.targets, self.client.ids[-1]) def test_targets(self): """test various valid targets arguments"""