#!/usr/bin/env python # coding: utf-8 # In[1]: import IPython.parallel as ipp rc = ipp.Client() dv = rc[:] dv # In[2]: dv.scatter('rank', rc.ids, flatten=True) # In[29]: import sys from textwrap import indent def foo(): """A function that prints stuff and fails sometimes""" for i in range(rank+1): print("%.2f" % (1. / (2 - i))) ar = dv.apply_async(foo) try: result = ar.get() except ipp.RemoteError as e: # display outputs, then let it raise for eid, stdout, stderr in zip(ar.engine_id, ar.stdout, ar.stderr): if stdout: print('[stdout:%2i]\n%s' % (eid, indent(stdout, ' ' * 2))) if stderr: print('[stderr:%2i]\n%s' % (eid, indent(stderr, ' ' * 2)), file=sys.stderr) raise else: print("ok: %s" % result) ar.display_outputs()