ipyparallel won't let me push an object to an engine

Viewed 303

Trying out ipyparallel, and getting stuck on the very early step of pushing code to my engines. Started up my engines with:

ipcluster start -n 4

Then try out putting things on the engines with:

import ipyparallel as ipp
from scipy.interpolate import interp1d
import numpy as np

class supersimple:
    def __init__(self):
        self.dummy = 5
    def __call__(self, x):
        return self.dummy + x

def simplefunc(x):
    return x

if __name__ == '__main__':

    rc = ipp.Client()
    dview = rc[:]

    # Instatiate my class and put it on an engine
    myclass = supersimple()
    rc[0].push({'myclass': myclass})
    # Put my function on the engine
    rc[0].push({'simplefunc': simplefunc})

    # Put a scipy object on the engine
    x = np.arange(10)
    y = 3.+3.3*x
    otherobj = interp1d(x, y)
    rc[0].push({'otherobj': otherobj})

    # Check that everything is on the engine
    print(rc[0]['otherobj'])
    print(rc[0]['simplefunc'])
    print(rc[0]['myclass'])

results in:

<scipy.interpolate.interpolate.interp1d object at 0x117913b38>
<function simplefunc at 0x117923b70>

and

blah blah, boring traceback
ipyparallel.error.RemoteError: NameError(name 'myclass' is not defined)

so, two questions: 1) How do I get my class over to the engine?

(not as important, but I'm curious) 2) Why isn't there any error raised when I try to push things to an engine and it fails? Seems odd for code to just say shruggies when it fails to do something.

0 Answers
Related