from IPython import parallel rc = parallel.Client() dv = rc[:] rc.ids %px a=5 %px print(a) %px a with dv.sync_imports(): import sys %px from __future__ import print_function %px print("ERROR", file=sys.stderr) %pxconfig --noblock %px import time %px time.sleep(5) %px time.time() %pxresult %pxconfig --block %px %matplotlib inline %%px import numpy as np import matplotlib.pyplot as plt dv.scatter('id', dv.targets, flatten=True) dv['stride'] = len(dv) %%px --noblock x = np.linspace(0,np.pi,1000) for n in range(id,12, stride): print(n) plt.plot(x,np.sin(n*x)) plt.title("Plot %i" % id) %pxresult %%px --group-outputs=engine x = np.linspace(0,np.pi,1000) for n in range(id+1,12, stride): print(n) plt.figure() plt.plot(x,np.sin(n*x)) plt.title("Plot %i" % n) %pxresult --group-outputs=order from __future__ import print_function def generate_output(): """function for testing output publishes two outputs of each type, and returns something """ import sys,os from IPython.display import display, HTML, Math print("stdout") print("stderr", file=sys.stderr) display(HTML("HTML")) print("stdout2") print("stderr2", file=sys.stderr) display(Math(r"\alpha=\beta")) return os.getpid() dv['generate_output'] = generate_output e0 = rc[-1] e0.block = True e0.activate('0') %px0 generate_output() %px generate_output() %pxresult --group-outputs order %pxresult --group-outputs engine %%px from numpy.random import random A = random((100,100,'invalid shape')) %%px %%timeit from numpy.random import random from numpy.linalg import norm A = random((100,100)) norm(A, 2) %%px --local import os thispid = os.getpid() print(thispid)