##// END OF EJS Templates
Backport PR #2305: RemoteError._render_traceback_ calls self.render_traceback...
Backport PR #2305: RemoteError._render_traceback_ calls self.render_traceback rather than an alias There are two options here: 1. `_render_traceback_` should *call* render_traceback 2. any subclass that redefines render_traceback must also redefine `_render_traceback_` I went with 1., which is more efficient code-wise when subclassing RemoteError (would prevent future cases of this same mistake), but less efficient execution-wise, because it involves an extra function call. closes #2303

File last commit:

r4910:0dc49390
r8379:0e42613f
Show More
parallel_pylab.ipy
49 lines | 1.2 KiB | text/plain | TextLexer
"""Example of how to use pylab to plot parallel data.
The idea here is to run matplotlib is the same IPython session
as an ipython parallel Client. That way matplotlib
can be used to plot parallel data that is gathered using
a DirectView.
To run this example, first start the IPython controller and 4
engines::
ipcluster -n 4
Then start ipython in pylab mode::
ipython -pylab
Then a simple "run parallel_pylab.ipy" in IPython will run the
example.
"""
import numpy as N
from pylab import *
from IPython.parallel import Client
# load the parallel magic
%load_ext parallelmagic
# Get an IPython Client
rc = Client()
v = rc[:]
v.activate()
# Create random arrays on the engines
# This is to simulate arrays that you have calculated in parallel
# on the engines.
# Anymore that length 10000 arrays, matplotlib starts to be slow
%px import numpy as N
%px x = N.random.standard_normal(10000)
%px y = N.random.standard_normal(10000)
print v.apply_async(lambda : x[0:10]).get_dict()
print v.apply_async(lambda : y[0:10]).get_dict()
# Bring back the data
x_local = v.gather('x', block=True)
y_local = v.gather('y', block=True)
# Make a scatter plot of the gathered data
plot(x_local, y_local,'ro')