2015-09-29 25 views
1

我正在处理一个类,它处理数字操作来执行数据数组。ipython并行和自己的类

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

, 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帮助我与我的问题和遗憾的英语不好

回答

0

f = uncan(pickle.loads(pf), g),看来calc功能是不正确的属性为泡菜,考虑定义类别以外的计算calcParallel