1

我正在研究一个处理数字运算以使用数据数组执行的类。

不幸的是,我无法通过将类的函数应用于创建的直接视图来开始工作。我得到错误:

, 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))

请帮我解决我的问题,抱歉英语不好

4

1 回答 1

0

f = uncan(pickle.loads(pf), g), 看来calc函数不是pickle的正确属性,考虑在Class之外定义calccalcParallel

于 2015-11-21T07:37:34.663 回答