2016-11-30 2 views
1

При выполнении этого кода, у меня есть эта ошибка:Ipyparallel ошибка DirectView

from ipyparallel import error, AsyncHubResult, DirectView as dv, Reference 

@dv.parallel(block=True) 
def np_std_par(x): 
    return np_std(x) 

TypeError: unbound method parallel() must be called with 
DirectView instance as first argument (got nothing instead) 

Как я могу использовать декоратор? Звучит неясно.

ответ

0

dv, как написано в этом первом блоке кода (и выше), на самом деле не является DirectView.

from ipyparallel import DirectView as dv 
print(type(dv)) 
<class 'traitlets.traitlets.MetaHasTraits'> 

DirectView не нужно импортировать, вместо этого, it should be created from a Client().

import ipyparallel 
client = ipyparallel.Client() 
dv = client[:] 

print(type(dv)) 
<class 'ipyparallel.client.view.DirectView'> 

Теперь декоратор будет выполнять, как ожидалось. (Хотя, похоже, вам придется импортировать np_std внутри вашей функции или использовать декоратор require, но это еще один вопрос, я рекомендую вам ознакомиться с примерами в документах, чтобы они стали более знакомыми)