2015-09-29 3 views
1

Я работаю над классом, который обрабатывает числовые операции для работы с массивом данных.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 помочь мне с моей проблемой и извините за плохой английский

ответ

0

f = uncan(pickle.loads(pf), g), кажется функция calc не является правильным атрибут для рассола, рассмотрите определение выписки вне класса calcParallel

 Смежные вопросы

  • Нет связанных вопросов^_^