ipython并行和自己的类

时间:2015-09-29 15:32:06

标签: ipython ipython-parallel

我正在处理一个处理数字操作以使用数据数组执行的类。

不幸的是,通过将类的功能应用于创建的直接视图,我无法工作。我收到错误:

, copy)
163     assert len(bufs) >= 2, "not enough buffers!"
164     pf = buffer_to_bytes_py2(bufs.pop(0))
--> 165     f = uncan(pickle.loads(pf), g)
166     pinfo = buffer_to_bytes_py2(bufs.pop(0))
167     info = pickle.loads(pinfo)
AttributeError: Can't get attribute 'calcParallel' on <IPython.core.interactiveshell.DummyMod object at 0x00000000047E4C50>

和班级:

import numpy as np 
import ipyparallel as parallel

class calcParallel():
    def __init__(self):
        self.data = np.random.rand(10,23)

    def calc(self,variables):

        #parallel view
        rc = parallel.Client()
        dview = rc.direct_view()
        dview.block = False

        #Serial
        self.res_serial = [self.__multiply(var) for var in variables]

        #Parallel
        imports = [
                'import numpy as np'
            ]

        #imports
        [dview.execute(imp) for imp in imports]

        #shared data
        dview['data'] = self.data


        #run calculation
        self.pr_list = [dview.apply_async(self.__multiply, var) for var in variables]

        dview.wait(self.pr_list)

        #process results
        self.res_parallel = []

        for r in self.pr_list:
            self.res_parallel.append(r.get())



    def __multiply(self, num):
        return data*num

t = calcParallel()
t.calc(np.random.rand(3))

Pleace帮我解决了我的问题,对不起的英语感到抱歉

1 个答案:

答案 0 :(得分:0)

f = uncan(pickle.loads(pf), g),似乎calc函数不是pickle的正确属性,考虑在类calcParallel

之外定义calc