##// END OF EJS Templates
Merge pull request #1768 from minrk/parallelmagics...
Merge pull request #1768 from minrk/parallelmagics Update parallel magics They now display all output, so you can do parallel plotting or other actions with complex display. The `px` magic has now both line and cell modes, and in cell mode finer control has been added about how to collate output from multiple engines. Tests, docs and example notebook added.

File last commit:

r6457:5303c5dd
r7060:a1360828 merge
Show More
plotting_frontend.py
61 lines | 1.5 KiB | text/x-python | PythonLexer
MinRK
updates to docs and examples
r3670 """An example of how to use IPython1 for plotting remote parallel data
MinRK
remove kernel examples already ported to newparallel
r3675 The two files plotting_frontend.py and plotting_backend.py go together.
MinRK
updates to docs and examples
r3670
To run this example, first start the IPython controller and 4
engines::
Thomas Kluyver
Tidy up references to ipclusterz in parallel examples.
r6457 ipcluster start -n 4
MinRK
updates to docs and examples
r3670
Then start ipython in pylab mode::
ipython -pylab
MinRK
remove kernel examples already ported to newparallel
r3675 Then a simple "run plotting_frontend.py" in IPython will run the
MinRK
updates to docs and examples
r3670 example. When this is done, all the variables (such as number, downx, etc.)
are available in IPython, so for example you can make additional plots.
"""
Thomas Kluyver
Update print syntax in parallel examples.
r6455 from __future__ import print_function
MinRK
updates to docs and examples
r3670
import numpy as N
from pylab import *
MinRK
remove kernel examples already ported to newparallel
r3675 from IPython.parallel import Client
MinRK
updates to docs and examples
r3670
MinRK
remove kernel examples already ported to newparallel
r3675 # Connect to the cluster
rc = Client()
view = rc[:]
MinRK
updates to docs and examples
r3670
# Run the simulation on all the engines
MinRK
remove kernel examples already ported to newparallel
r3675 view.run('plotting_backend.py')
MinRK
updates to docs and examples
r3670
MinRK
remove kernel examples already ported to newparallel
r3675 # Bring back the data. These are all AsyncResult objects
number = view.pull('number')
d_number = view.pull('d_number')
downx = view.gather('downx')
downy = view.gather('downy')
downpx = view.gather('downpx')
downpy = view.gather('downpy')
MinRK
updates to docs and examples
r3670
MinRK
remove kernel examples already ported to newparallel
r3675 # but we can still iterate through AsyncResults before they are done
Thomas Kluyver
Update print syntax in parallel examples.
r6455 print("number: ", sum(number))
print("downsampled number: ", sum(d_number))
MinRK
updates to docs and examples
r3670
MinRK
remove kernel examples already ported to newparallel
r3675
MinRK
updates to docs and examples
r3670 # Make a scatter plot of the gathered data
# These calls to matplotlib could be replaced by calls to pygist or
# another plotting package.
figure(1)
MinRK
remove kernel examples already ported to newparallel
r3675 # wait for downx/y
downx = downx.get()
downy = downy.get()
MinRK
updates to docs and examples
r3670 scatter(downx, downy)
xlabel('x')
ylabel('y')
figure(2)
MinRK
remove kernel examples already ported to newparallel
r3675 # wait for downpx/y
downpx = downpx.get()
downpy = downpy.get()
MinRK
updates to docs and examples
r3670 scatter(downpx, downpy)
xlabel('px')
ylabel('py')
Thomas Kluyver
Update print syntax in parallel examples.
r6455 show()