1

我想采用现有功能(例如来自 scikit-learn:特别是“预测”功能),并使用多个核心将其应用于某些数据集。

我的第一个天真的方法:

def parallel_predict(classifier):
    @dview.parallel(block=True)
    def predict( matrix ):
        return classifier.predict(matrix)
    return predict

不起作用(多个核心不会开始旋转)。有没有办法使这项工作?

或者以某种方式将“不可迭代”函数传递给@dview.parallel函数?

4

1 回答 1

0

几个想法,都基于远程执行文档。我习惯了@remote装饰器,而不是@parallel你用过的那个,但希望它们仍然适用于你的情况。(由于某种原因,今天似乎无法加载该文档)。

是不是因为classifier模块无法在引擎上访问而导致远程执行不起作用?如果是这样,这可以通过import显式向装饰函数添加语句、使用with dview.import_sync(): import classifier(根据此示例)或添加@require('classifier'):装饰器(来自文档的同一部分)来解决。至于最后一个选项,不确定多个装饰器是如何交互的(可能最容易尝试一下)。

第二个想法是您可以检查远程异常(这里是那个文档)。这将比什么都不拿回要明确得多。例如,类似:

x = e0.execute('1/0')
print x.metadata['error']

x = predict
print x.metadata['error']
于 2015-06-17T00:29:10.360 回答