import sympy as s from sympy.abc import x,y s.init_printing() element = lambda n, m : m * x**n if (n+m) % 3 else y L = s.Matrix([[element(n,m) for m in range(9)] for n in range(9)]) L numer_L = s.lambdify((x,y), L, 'numpy') numer_L(3,4) # in series import numpy s_result = list(map(lambda y: numpy.linalg.det(numer_L(3,y)), range(30))) s_result # set up parallel environment. 2 engines started with `ipcluster start -n 2` from IPython.parallel import Client rc = Client() dview = rc[:] # in parallel # do imports and push our lambda function over dview.execute('import numpy') dview.push(dict(numer_L=numer_L)) p_result = dview.map_sync(lambda y: numpy.linalg.det(numer_L(3,y)), range(30)) p_result type(L) from sympy.utilities.lambdify import lambdastr lstr = lambdastr((x,y), L, dummify=True) lstr # in parallel # do imports and push our lambda function over dview.execute('import numpy') dview.execute('from numpy import matrix as ImmutableMatrix') dview.push(dict(numer_L=numer_L)) p_result = dview.map_sync(lambda y: numpy.linalg.det(numer_L(3,y)), range(30)) p_result # in parallel # do imports and push our lambda function over dview.execute('import numpy') dview.execute('from numpy import matrix as ImmutableMatrix') dview.push(dict(lstr=lstr)) p_result = dview.map_sync(lambda y: numpy.linalg.det(eval(lstr)(3,y)), range(30)) p_result p_result == s_result import sys sys.version import IPython IPython.version_info s.__version__ # sympy numpy.__version__