[IPython-dev] pushing python class definition to engines

Andrew Straw strawman@astraw....
Tue Jul 15 19:01:03 CDT 2008


After seeing Brian Granger's great demo of the parallel abilities in
IPython last week at the SIAM conference, I'm playing with ipython trunk
which I just pulled out of launchpad (for this reason, I'm posting on
the -dev list).

Anyhow, if I start a client in the usual way:

from IPython.kernel import client
mec = client.MultiEngineClient()

I can easily push Python integers:

a=5
mec['a'] = a
print mec.gather('a')

But pushing classes doesn't work:

class MyObj(object):
    def __init__(self,x):
        print 'PID',os.getpid()
        self.x=x

mec['MyObj'] = MyObj
print mec.gather('MyObj')

That gives the following error. How can I push a class definition to my
engines?

Traceback (most recent call last):
  File "flydra/test_ipython.py", line 14, in <module>
    mec.push_function(dict(MyObj= MyObj,))
  File
"/home/astraw/PY_ipython/lib/python2.5/site-packages/IPython/kernel/multiengineclient.py",
line 606, in push_function
    return self._blockFromThread(self.smultiengine.push_function,
namespace, targets=targets, block=block)
  File
"/home/astraw/PY_ipython/lib/python2.5/site-packages/IPython/kernel/multiengineclient.py",
line 456, in _blockFromThread
    result = blockingCallFromThread(function, *args, **kwargs)
  File
"/home/astraw/PY_ipython/lib/python2.5/site-packages/IPython/kernel/twistedutil.py",
line 69, in blockingCallFromThread
    return twisted.internet.threads.blockingCallFromThread(reactor, f,
*a, **kw)
  File
"/home/astraw/PY_ipython/lib/python2.5/site-packages/Twisted-8.1.0-py2.5-linux-x86_64.egg/twisted/internet/threads.py",
line 83, in blockingCallFromThread
    result.raiseException()
  File
"/home/astraw/PY_ipython/lib/python2.5/site-packages/Twisted-8.1.0-py2.5-linux-x86_64.egg/twisted/python/failure.py",
line 319, in raiseException
    raise self.type, self.value, self.tb
AttributeError: 'module' object has no attribute 'MyObj'



More information about the IPython-dev mailing list