ipython并行推送自定义对象

时间:2014-06-19 23:54:57

标签: parallel-processing ipython

我无法将对象发送给直接查看工作者。 这就是我想要做的事情:

class Test:
  def __init__(self):
    self.id = 'ddfdf'

from IPython.parallel import Client
rc = Client()
dv = rc[:]
t = Test()
dv['t'] = t
print dv['t']

NameError: name 't' is not defined

如果我尝试推送pandas对象或任何构建对象,这将有效。 使用自定义对象的方法是什么?

我试过了:

dv['Test'] = Test
dv['t'] = t
print dv['t']
UnpicklingError: NEWOBJ class argument isn't a type object

1 个答案:

答案 0 :(得分:2)

对于交互式定义的类(在__main__中),您需要推送类定义,或使用dill。但即便如此,这似乎也不适用于旧式课程,这是IPython处理旧式课程的一个错误[1]。如果您使用新式类,此代码可以正常工作:

class Test(object):
    ...

而不是旧式的课程。请注意,Python 3中没有旧式类。 无论如何总是使用新式课程通常是一个好主意。